728x90
https://programmers.co.kr/learn/courses/30/lessons/12906
프로그래머스 level 01 '같은 숫자는 싫어'를 풀었다.
간단한 문제라고 생각했는데 어디서 놓치고 있는건지 자꾸 오류가 떠서 생각보다 시간을 많이 썼다...
for문으로 arr를 반복하면서 인덱스 범위 오류가 나서 문자열 슬라이싱을 사용했고,
문자열 슬라이싱을 사용하면서 출력되는 타입이 다르다는 것을 놓치고 있어서 찾느라 시간을 쓴 것 같다.
처음 시도한 오답
def solution(arr):
answer = []
for i in range(len(arr)) :
if arr[i] != arr[i+1 : i+2]:
answer.append(arr[i])
return answer
for문으로 arr를 반복할 때 arr[i] != arr[i+1]로 if문 조건을 걸면 인덱스 범위 오류가 난다.
이를 해결하기 위해서 문자열 슬라이싱을 사용했고 그럼에도 불구하고 제대로 결과가 나오지 않았다.
answer를 출력하니 연속으로 중복되는 숫자가 걸러지지 않고 arr 전부 출력되었다.
설마하고 문자열 슬라이싱의 출력 형태를 봤는데 아니나 다를까 list 형식으로 출력이 되었다. arr[i]는 list 형식이 아니라 int형으로 나오는데 슬라이싱은 list 형식으로 출력이 되니 걸러지지 못했던 것이다.
그래서 아래와 같이 코드를 수정했다.
수정한 정답 코드
def solution(arr):
answer = []
for i in range(len(arr)) :
if [arr[i]] != arr[i+1 : i+2]:
answer.append(arr[i])
return answer
arr[i]를 list로 만들어서 수정했더니 문제없이 테스트 케이스와 효율성 모두 통과되었다.
문자열 슬라이싱 출력 형식에 대해서 한번도 생각해 보지 않고 그냥 사용했었는데 이 문제를 풀면서 출력 형식이 list라는 것을 한번 더 상기시키게 되었다.
728x90