코드
def solution(n, m, section):
start = section[0]
end = section[0] + m - 1
count = 1
for se in section:
if start <= se <= end:
continue
start = se
end = se + m -1
count += 1
return count
나의 삽질
1.
for문을 하나하나 돌리면서 리스트를 만들고 ex) [1,2,3,4], [2,3,4,5], [5,6,7,8]...
section의 요소가 들어있으면 count를 해주는 식으로 하려했으나,
역시나 안됐다.
2중 for를 사용하다보니 원하는대로 count를 증가시킬 수 없었다.
(뭘 어떻게 하든 안됐음..)
2.
section의 최대 - 최소로 새로운 리스트를 만들어서 m길이만큼 잘라준 횟수로 풀면 된다고 생각했는데,
n = 8, m = 3, section=[1, 8] 인 경우에는 과하게 횟수가 더해지는 케이스가 발생하게되었다.
깨달은 점
다른 사람의 풀이이지만, section에 포인트를 두고 for로 하나하나 움직이는게 아니라, 점프를 한다고 생각하면 문제를 쉽게 풀 수 있었다.
오히려 for문으로 하나하나 접근하는게 독이었다.
그래서 생각을 해서 문제를 풀어야겠다고 생각했다.
뭔가 손으로 코딩하는게 아니라 머리로 코딩..하자..
'IT 공부 > 코딩테스트' 카테고리의 다른 글
특정 index로 리스트 정렬하는 방법 -파이썬 (0) | 2023.12.11 |
---|---|
[프로그래머스 level1] [PCCE 기출문제] 10번 / 데이터 분석 - 파이썬 (0) | 2023.12.11 |
[프로그래머스 level1] 대충 만든 자판 python3 (2) | 2023.12.07 |
[프로그래머스 Level1] 둘만의 암호 (2) | 2023.12.05 |
파이썬 약수 구하기 (0) | 2023.11.29 |