반응형
https://school.programmers.co.kr/learn/courses/30/lessons/161989
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
def solution(n, m, section):
wall = [i+1 for i in range(n)]
paint = set(wall) - set(section)
count = 0
for i in section:
if i not in paint:
roller = wall[i-1:i-1+m]
paint.update(roller)
count += 1
return count
저는 집합(set
)자료구조를 이용하여 문제를 해결하였습니다.
초기에 설정하는 변수는 아래와 같습니다.
- wall : 전체 벽
- paint : 페인트가 칠해져있는 벽
- count : 최소 횟수를 저장할 변수
section
을 반복하면서 칠해야하는 벽(i
) 을 추출합니다.
i
벽이 paint
에 존재하지 않는다면, 즉 페인트 칠이 되어 있지 않다면i
벽부터 m
길이 만큼의 roller
를 생성하고 paint.update()
를 하여 페인트 칠을 해줍니다.
그리고 count
변수를 1
증가 시킵니다.
section
을 모두 확인했다면 count
변수를 반환해줍니다.
반응형
'코딩테스트' 카테고리의 다른 글
[코딩테스트] 프로그래머스 바탕화면 정리 파이썬(Python) (0) | 2023.03.06 |
---|---|
[코딩테스트] 백준 암호 만들기 파이썬(Python) (0) | 2023.03.06 |
[코딩테스트] 프로그래머스 정수 삼각형 파이썬(Python) (0) | 2023.03.02 |
[코딩테스트] 백준 영단어 암기는 괴로워 파이썬(Python) (0) | 2023.02.28 |
[코딩테스트] 백준 비밀번호 발음하기 파이썬(Python) (0) | 2023.02.27 |