덧칠하기
풀이
처음에 어 쉽네 했는데 멍청하게 풀어서 실패했다.
그리고 다음은 이렇게 해야지! 하고 풀었는데 계속 실패했다. 왜지왜지왜지 하다가 보니까
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
'알고리즘 > 프로그래머스' 카테고리의 다른 글
프로그래머스 Lv2 피로도 (python) (0) | 2024.02.07 |
---|---|
프로그래머스 Lv2 귤 고르기(python) (0) | 2024.02.06 |
프로그래머스 Lv2 짝지어 제거하기 (python) (0) | 2024.02.05 |
프로그래머스 Lv2 멀리 뛰기 (python) (0) | 2024.02.04 |
프로그래머스 Lv2 피보나치 수 (python) (1) | 2024.02.04 |