본문 바로가기
알고리즘/프로그래머스

프로그래머스 Lv1 덧칠하기 (python)

by 개발하는 호랑이 2024. 2. 5.

덧칠하기

 

풀이

처음에 어 쉽네 했는데 멍청하게 풀어서 실패했다.
그리고 다음은 이렇게 해야지! 하고 풀었는데 계속 실패했다. 왜지왜지왜지 하다가 보니까

stamp.append(section[i]+m-1)

부분을

stamp.append(stamp[-1]+m)

로 적어놨다.
하필 테스트케이스가 다 통과되는 바람에 제대로 찾지를 못했다. 그래도 코드를 천천히 보면서 직접 해결할 수 있어서 다행이다.

# n미터의 벽을 따로따로 나눠서 1~n까지의 벽돌이 있다고 생각해보자.
# m은 한번에 연속된 벽돌을 페인트칠할 수 있는 갯수임 막대기로 페인트를 찍어낸다 생각하자.
# section은 그 n개의 벽돌 중 색칠이 안 된 벽돌 번호.
# section을 모두 해결하려면 최소 몇번의 m 막대기를 찍어야하나?
def solution(n, m, section):
    stamp = [section[0]-1]
    answer = 0
    for i in range(len(section)): 
        if section[i] > stamp[-1]:
            stamp.append(section[i]+m-1)
            answer += 1
    return answer

다른 사람 코드

나와 아주 비슷한 방식으로 푼 방법이다.
난 리스트를 사용해서 비교했지만, 이건 숫자변수로 비교해서, 위치를 prev로 재설정 했다는 것이 되겠다.

def solution(n, m, section):
    answer = 1
    prev = section[0]
    for sec in section:
        if sec - prev >= m:
            prev = sec
            answer += 1

    return answer