티스토리 뷰

728x90
반응형

문제

 

programmers.co.kr/learn/courses/30/lessons/12906?language=python3

 

코딩테스트 연습 - 같은 숫자는 싫어

배열 arr가 주어집니다. 배열 arr의 각 원소는 숫자 0부터 9까지로 이루어져 있습니다. 이때, 배열 arr에서 연속적으로 나타나는 숫자는 하나만 남기고 전부 제거하려고 합니다. 단, 제거된 후 남은

programmers.co.kr

 

코드 

def solution(arr):
    answer = []
    for i in arr:
        if answer[-1:] == [i]:
            continue
        else:
            answer.append(i)
        
    return answer

 

코드설명

연속적으로 나타나는 숫자를 하나만 남기고 전부 제거하는 문제이다.

처음에는 set을 사용해 풀려고 했으나 첫번째 예제처럼 연속으로 나오지만 않는다면 같은 숫자라도 여러개가 나올 수 있어서 set으로는 풀 수가 없다.

 

그래서 arr 리스트를 순서대로 돌면서 answer 리스트에 마지막값하고 비교해서 다를 경우 answer에 넣어주면된다.

여기서 주의할점은 answer에 처음에 아무값도 안들어 있기때문에 answer[-1]로 하면 인덱스에러가 나온다.

그래서 answer[-1:]을 사용하는데 그러면 리스트형태로 값이 나오기 때문에 비교하는 값도 리스트형태로 비교해주면 된다.

반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30