Algorithm/Programmers

[Python] 같은 숫자는 싫어

느낌표 공장장 2021. 4. 6. 17:29
def solution(arr):
    answer = []
    for i, j in enumerate(arr) :
        if i != 0 :
            if j == answer[-1] :
                continue
            else : 
                answer.append(j)
        else :
            answer.append(j)
    return answer

풀이

1. enumerate를 사용하여 리스트의 인덱스와 값을 각각 i와 j에 반복하여 받도록 한다

2. i가 1이상일 경우에만 비교할 수 있으므로 if 문을 사용해서 i가 0이 아닌 경우,

     1) arr에서 받은 값 j와 그 전에 리스트에 넣은 값(이전 j값)을 비교하여 같으면 반복문 처음으로 돌아간다.

     2) 다를 경우에는 리스트에 추가해준다.

3. i가 0일 경우에는, 무조건 리스트에 넣는 경우이므로 리스트에 넣어준다.


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

다른 분의 코드를 참고하여 더 간단하게 구현한 코드이다.

여기서 핵심은 i[-1:] ! !

나는 [-1:]를 생각하지 못하고 리스트에 아무것도 없는 상태에서 [-1]을 해주면 오류가 나므로 if문을 썼는데,

[-1:]를 쓰면 리스트에 아무것도 없어도 그냥 []를 반환한다.

 

+ i[-1:] == [i] 에서 [i]도 리스트에 넣어준 이유는 i[-1:]가 리스트 타입이므로 i에도 리스트를 입혀주었다.

   (그렇지 않으면 무조건 다르다고 나옴)

'Algorithm > Programmers' 카테고리의 다른 글

[Python] 두 정수 사이의 합  (0) 2021.04.07
[Python] K번째수  (0) 2021.04.07
[Python] 2016년  (0) 2021.04.06
[Python] 가운데 글자 가져오기  (0) 2021.04.06
[Python] 모의고사  (0) 2021.04.06