10/14 프로그래머스 덧칠하기 파이썬
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보다 커야한다. 롤러의 범위 내에 들어오는 경우는 아무일도 일어나지 않는다.
댓글남기기