본문 바로가기
2021/코딩테스트

[프로그래머스] Lv.1 - 같은 숫자는 싫어_파이썬

by 에이도 2020. 11. 26.

효울성까지 체크하는 문제가 나왔습니다!

 

효율성이 시간 복잡도로 측정한다는 말을 얼핏 들은거 이외에는 효율성에 대해 잘 모르겠습니다..ㅠ.ㅠ

 

같은 숫자는 싫어는 숫자 listt arr에서 연속된 숫자를 제외하고 모든 숫자를 return 하는 문제입니다.

 

따라서 첫번째 고려사항은 중복된 숫자가 나오지 않게 막아줘야 했습니다.

이를 위해서 저는 if else문을 통해 조건문을 이용했습니다.

 

if문으로 맨 마지막에 추가된(제일 최근에 추가된)숫자가 지금 추가되려는 숫자와 같다면 pass

그렇지 않다면(제일 최근에 추가된 숫자와 다르다면) 지금 숫자(i)를 추가하도록 했습니다.

 

하지만 제일 처음 실행했을때, return하는 answer의 리스트가 비어있었기 때문에

answer[-1]이 에러가 났습니다.

 

따라서 제일 처음 숫자는 무조건 추가해야겠다라고 생각하였습니다.

따라서 len(answer) >= 1 조건문을 달고 이 조건을 만족하면 위의 방법을 사용하였고,

 

answer의 길이가 1 미만, 다시말해서 answer리스트가 비어있을 경우에는 else를 통해 숫자를 추가했습니다.

 

def solution(arr):
    answer = []
    for i in arr:
        if len(answer) >=1:
            if i == answer[-1] :
                pass
            else:
                answer.append(i)
        else :
            answer.append(i)

    return answer


print(solution([1,1,3,3,0,1,1]))
print(solution([3,4,4,2,3,5,7,8,96,5,4,7,8,8,8,4,5,2]))


[out]
[1, 3, 0, 1]
[3, 4, 2, 3, 5, 7, 8, 96, 5, 4, 7, 8, 4, 5, 2]

 

 

댓글