https://school.programmers.co.kr/learn/courses/30/lessons/161989
해결 방법
투 포인터를 이용해서 문제를 해결했다.
벽을 칠해야 하는 section이 오름차순으로 정렬되어 있기 때문에
첫 start는 벽의 제일 좌측 값인 section[0], end는 start + (m-1) (start부터 시작해서 롤러 한 번에 칠할 수 있는 범위)을 넣어준다.
section에 있는 값을 하나씩 for문에 넣어주며
1) end보다 작은 경우 => 이미 칠한 경우이기 때문에 pass
2) end보다 큰 경우 => 롤러의 횟수를 +1, start와 end를 i를 기준으로 갱신해준다.
2. 내가 작성한 코드
def solution(n, m, section):
start = section[0]
end = start + (m-1)
cnt = 1
for i in section:
if i > end:
cnt+=1
start = 1
end = i + (m-1)
return cnt
3. 리팩토링
start라는 변수 없이 end 값만 가지고도 문제를 풀 수 있다.
def solution(n, m, section):
paint = section[0] + (m-1)
cnt = 1
for i in section:
if i > paint:
cnt+=1
paint = i + (m-1)
return cnt
'🔅코딩테스트 공부🔅 > ❗프로그래머스(Lv.2)' 카테고리의 다른 글
[프로그래머스] Level2 숫자 변환하기(python) (0) | 2023.03.07 |
---|---|
[프로그래머스] Level2 미로 탈출(python) (0) | 2023.03.06 |
[프로그래머스] Level2 예상 대진표(python) (0) | 2023.03.05 |
[프로그래머스] Level2 귤 고르기(python) (0) | 2023.03.03 |
[프로그래머스] Level2 무인도 여행(python) (0) | 2023.02.20 |
댓글