728x90
https://school.programmers.co.kr/learn/courses/30/lessons/181922
처음에 작성했던 코드!
def solution(arr, queries):
answer = []
for s, e, k in queries:
for i in range(len(arr[s:e+1])):
if i%k==0:
arr[i] += 1
answer = arr
return answer
-> 이렇게 했을 때 문제에서 주어진 케이스는 통과했지만, 막상 채점 결과는 모두 실패로 나왔다!
틀린 이유:
for i in range(len(arr[s:e+1])):
는 arr 배열의 인덱스 길이를 기준으로 for문을 돌기 때문에 시작이 s가 아닌 0부터 길이에 대한 정보로 for문을 돈다.
그래서 테스트 케이스에서는 모두 s가 0이었기 때문에 상관이 없었다.
그러나!!
만약 s가 0이 아니면, for문을 도는 시작점이 달라지기 때문에 오답이 나게 된다.
우리가 돌고자 하는 범위는 s부터 e까지 이기 때문에, 배열에서 인덱스를 기준으로 돌지 말고
숫자 범위를 기준으로 for문을 돌면 된다!
즉,
맞는 정답!
def solution(arr, queries):
answer = []
for s, e, k in queries:
#for i in range(len(arr[s:e+1])):
for i in range(s,e+1):
if i%k==0:
arr[i] += 1
answer = arr
return answer
면 정답!
끄읏-!
728x90
'코딩테스트 > PYTHON' 카테고리의 다른 글
[프로그래머스][PYTHON] Lv. 0 문자열 여러 번 뒤집기 (1) | 2023.12.29 |
---|---|
[프로그래머스][PYTHON] Lv. 0 배열 만들기 2 (1) | 2023.12.28 |
[프로그래머스][PYTHON] Lv. 0 수열과 구간 쿼리 2 (0) | 2023.12.27 |
[프로그래머스][PYTHON] Lv. 0 수열과 구간 쿼리 3 (0) | 2023.12.27 |
[프로그래머스][PYTHON] Lv. 0 수 조작하기 2 (1) | 2023.12.27 |