본문 바로가기
Coding Test/Python

[프로그래머스] 덧칠하기 Python 풀이

by giem 2023. 4. 6.
반응형


문제


구현

문제가 꽤 긴데 사실 입출력 예를 보면 매우 간단한 문제다.

 

처음 색칠 안된칸부터 색칠해서 롤러를 칠하고 그 롤러의 길이 뒤부터 색칠이 안된곳을 찾아서 다시 칠해주면 된다.


코드
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번째 인덱스부터 칠해준다.

 

반응형

댓글