[프로그래머스 Python] Lv 1. 같은 숫자는 싫어
코딩테스트 고득점 Kit - 스택/큐 문제
✔️ 문제 설명
배열 arr가 주어집니다. 배열 arr의 각 원소는 숫자 0부터 9까지로 이루어져 있습니다. 이때, 배열 arr에서 연속적으로 나타나는 숫자는 하나만 남기고 전부 제거하려고 합니다. 단, 제거된 후 남은 수들을 반환할 때는 배열 arr의 원소들의 순서를 유지해야 합니다. 예를 들면,
arr = [1, 1, 3, 3, 0, 1, 1] 이면 [1, 3, 0, 1] 을 return 합니다.
arr = [4, 4, 4, 3, 3] 이면 [4, 3] 을 return 합니다.
배열 arr에서 연속적으로 나타나는 숫자는 제거하고 남은 수들을 return 하는 solution 함수를 완성해 주세요.
제한사항
- 배열 arr의 크기 : 1,000,000 이하의 자연수
- 배열 arr의 원소의 크기 : 0보다 크거나 같고 9보다 작거나 같은 정수
- 👉 문제 보러가기
입출력 예
arr | answer |
---|---|
[1,1,3,3,0,1,1] | [1,3,0,1] |
[4,4,4,3,3] | [4,3] |
입출력 예 설명
입출력 예 #1,2 문제의 예시와 같습니다.
✔️ 문제 풀이
(1) Pseudo-Code
- 주어지는 배열은 중복된 값이 있다면 붙어있다.
- 0~9 사이의 값만 존재한다는 점을 이용해 변수에 10을 기본값으로 설정한다.
- 이전 값을 변수에 계속 할당하여 이전값과 현재값이 같으면 패스하고 같지않으면 리스트에 넣는다.
- 위 과정을 통해 연속되는 값을 1개만 불러온다.
(2) 코드 작성
def solution(arr):
answer = []
a = 10
for num in arr:
if a != num:
answer.append(num)
a = num
return answer
(3) 코드 결과
- 성능요약 : 메모리 27.9 MB, 시간 41.02 ms
- 채점결과 : 정확성 71.9, 효율성 28.1, 합계 100.0/100.0
(4) 코드 리뷰 및 회고
- 이번 문제는 리스트 내 요소의 이전 값을 변수에 할당하여 저장하고 그 다음 값이 이전 값과 일치하다면 pass, 일치하지 않다면 리스트에 추가되도록 설정했다.
- 메모리와 시간(성능요약)을 보면 잘 푼 것 같진 않지만.. EASY 😎
댓글남기기