최대 1 분 소요

https://school.programmers.co.kr/learn/courses/30/lessons/161989

프로그래머스 연습문제 덧칠하기이다..

처음에 테스트 케이스만 보고 제출했던 코드는

def solution(n, roller, section) :
    answer = (max(section) - min(section)) // roller + 1
    return answer

이었는데 페인트를 칠해야 하는 타일을 [1, 100]으로 생각해보면 위의 코드가 틀렸다는 사실을 금방 알 수 있다.

정답코드

def solution(n, roller, section) :
    answer = 1
    start = section[0] # 롤러가 시작하는 지점
    for i in range(1, len(section)) :
        if section[i] - start >= roller: 
            answer += 1
        	start = section[i] # 롤러가 시작되는 지점 갱신
if section[i] - start >= roller :

이 if문에서 조건을 저렇게 설정한 이유는 롤러의 길이가 4라면, 1, 2, 3, 4까지만 칠할 수 있고 5부터는 칠할 수 없다. 그래서 뺀 값이 롤러의 길이 roller보다 커야한다. 롤러의 범위 내에 들어오는 경우는 아무일도 일어나지 않는다.

댓글남기기