알고리즘/programmers[1]

[프로그래머스] 같은 숫자는 싫어 python3 다른 풀이

fladi 2022. 1. 23. 19:03
728x90

# 1.   a[-1:]

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

 

a[-1:]은 a[-1]과 같은 효과이면서, 오류는 나지 않는 방법!! (a가 []라도 오류가 나지 않는다)

대신 리스트에 들어간 상태로 반환되기 때문에([1], [2] 이런 꼴) i를 [i]로 써야한다.

 

 

 

 

#2.  a[i-1:i]

def no_continuous(s):
    
    return [ v for i,v in enumerate(s) if s[i-1:i]!=s[i] ]

a[i-1:i]는 a[i-1]과 같은 효과이면서, 오류는 나지 않는 방법이다!

a[i-1:i]는 리스트에 들어간 상태로 반환되지 않는다.(왜인지는 모름..) 그래서 s[i]로 그냥 써도 된다.

 

enumerate로 인덱스랑 값을 받아서 처리해준다.

 

 

 

#3.  a[i+1:i+2]

def no_continuous(s):

    return [s[i] for i in range(len(s)) if [s[i]] != s[i+1:i+2]]

a[i+1:i+2]는 a[i+1]과 같은 효과이면서, 오류가 나지 않는다.

얘도 리스트에 들어간 상태로 반환되기 때문에 [ s[i] ] 와 같이 써야한다. (s[i]는 int이기 때문)

 

 

 

 

 

#4. if  (len != 0)

def no_continuous(s):
    result = []
    for c in s:
        if (len(result) == 0) or (result[-1] != c):
            result.append(c)
    return result

인덱스 -1이 없는 경우(빈리스트인 경우)를 피하기 위해 len == 0인 경우를 제외하고 생각하는 방법이다.

728x90