프로그래머스 LV1 같은 숫자는 싫어

프로그래머스 LV1 같은 숫자는 싫어

2021, Apr 02    

프로그래머스 lv1 같은 숫자는 싫어

중복 제거를 할때 set()을 떠올리기 쉬운데 이건 순서를 정렬해버림

collections.Counter도 정렬을 해버림.

순서를 지키면서 중복을 제거하고 싶으면 for문을 사용


풀이

# 풀이 1
# 빈 배열을 만들어주고 0 인덱스를 넣고 뒤에꺼랑 비교해서 앞에 없으면 넣어주기
def solution(arr):
    b = []
    for i in range(len(arr)):
        if i == 0:
            b.append(arr[i])
        elif arr[i] != arr[i-1]:
            b.append(arr[i])

    return b

if __name__ == '__main__':
    arr = [1,1,3,3,0,1,1]
    print(solution(arr))
# 풀이2
# 빈 배열을 만들어주고 거기에 비교해서 없으면 배열에 넣어주기
def solution(arr):
    a = []
    for i in arr:
        if a[-1:] == [i]: continue
        a.append(i)
    return a

if __name__ == '__main__':
    arr = [1,1,3,3,0,1,1]
    print(solution(arr))

if 문의 continue는 특정 조건일때 그냥 넘기는 것. 그리고 리스트에서 a[-1:]의 리스트는 맨 뒤에 하나 빼고 전부다란 뜻.


출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges