반응형
문제
구현
문제가 꽤 긴데 사실 입출력 예를 보면 매우 간단한 문제다.
처음 색칠 안된칸부터 색칠해서 롤러를 칠하고 그 롤러의 길이 뒤부터 색칠이 안된곳을 찾아서 다시 칠해주면 된다.
코드
def solution(n, m, section):
result=0
i=0
section = set(section)
while i<n+1:
if i in section:
i+=m-1
result+=1
i+=1
return result
문제를 그대로 따라가는 가장 간단한 구현이다.
i가 칠할구역에 있다면 나머지는 다 색칠되는 것이기 때문에 i를 뒤로 쭉 더해주면 된다.
i+1을 뒤에서 해주기 때문에 롤러의 길이 -1만큼만 가주었다.
다른 풀이
def solution(n, m, section):
answer = 0
while len(section) > 0:
temp = section[0] + m
while len(section) != 0 and temp > section[0]:
section.pop(0)
answer += 1
return answer
벽 길이가 짧고 칠할게 많을 때는 원래 풀이가 좋지만 길이가 매우 길고 칠할구역이 적을 때 더 효율적인 코드라고 생각해서 써보았다.
칠할 구역이 남아있을 때까지를 while조건으로 잡고 section의 0번째 인덱스부터 칠해준다.
반응형
'Coding Test > Python' 카테고리의 다른 글
[프로그래머스] 추억 점수 Python 풀이 (0) | 2023.04.06 |
---|---|
[프로그래머스] 바탕화면 정리 Python 풀이 (0) | 2023.04.06 |
[프로그래머스] 과제 진행하기 Python 풀이 (0) | 2023.04.06 |
[프로그래머스] 연속 펄스 부분 수열의 합 Python 풀이 (0) | 2023.03.24 |
[Codility] Carol of the Code Python (코드 업데이트) (1) | 2023.03.13 |
댓글