본문 바로가기
알고리즘/프로그래머스

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

by 며루치꽃 2020. 12. 31.

1. 문제

programmers.co.kr/learn/courses/30/lessons/12906

 

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

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

programmers.co.kr

2. 내가 생각했던 풀이과정

첫 번째 생각했던 풀이 과정

1) 빈 배열을 주고 모든 리스트의 요소를 비교합니다

2) 배열의 요소가 temp와 다를 경우 temp를 그 수로 변경하고, 리스트에 추가합니다

 

이 경우, 테스트는 맞았지만, 효율성에 문제가 생겨 다르게 생각해보았다


두 번째 생각했던 풀이 과정

1) 배열의 첫번째 요소를 빈 리스트에 넣어줍니다

2) 1 부터 배열의 길이만큼 반복문을 돌면서 배열의 다음 수와 배열의 이전 요소가 같지 않다면 배열에 추가합니다

3. 나의 풀이

첫번째 풀이 과정

arr = list(map(int, input().split()))

# 1
def solution(arr):
    answer = []
    temp = 0
    for i in range(len(arr)):
        if temp != arr[i]:
            temp = arr[i]
            answer.append(arr[i])
        else:
            continue
    return answer

 

두번째 풀이 과정

def solution(arr):
    answer = []
    answer.append(arr[0])
    for i in range(1, len(arr)):
        if arr[i] != arr[i-1]:
            answer.append(arr[i])
    return answer

4. 다른 사람의 풀이

def no_continuous(s):
    a = []
    for i in s:
        if a[-1:] == [i]: continue
        a.append(i)
    return a

5. 새로 알게된 점

슬라이스를 할 때, [-1:] 을 하여도 오류가 안나는 것을 알게 되었습니다. 

 

 

댓글