728x90
반응형
SMALL
# 문제 설명
배열 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보다 작거나 같은 정수
[입출력 예]
## 문제 정리
- 연속된 숫자 나오면 1개 제외 모두 삭제
- 주어진 배열의 앞에서부터 뒤로 순차적으로 비교
- for문으로 배열을 반복, 임시 변수 temp에 저장 후 다음 반복 값과 비교하는 방식도 가능하지만,
- 이런 기능을 해주는 Stack이 존재
- 하지만 answer 조건이 순서 유지기에 후입 선출인 Stack은 순서가 거꾸로 됨
- 이러한 이유로 앞 뒤 자유롭게 추출이 가능한 ArrayDqueue 사용
- Stack vs Dqueue 참고글
- 참고 : https://tecoble.techcourse.co.kr/post/2021-05-10-stack-vs-deque/
## 풀이
[소스]
https://github.com/jeonghoonb/cote-programmers/blob/main/src/stackAndQueue/No_12906.java
반복문을 돌려 배열 arr의 값들을 비교하여 Dqueue에 add()
처음엔 무조건 Dqueue가 Empty 상태기에 Empty 체크 후 add()
이후, 가장 최근에 add 된 값과 arr 배열 반복 값 비교 후 같지 않으면 연속된 수가 아니기에 Dequeue에 add()
answer은 순서가 유지되어야 한다는 조건이 있기에, Dqueue의 앞부분부터 poll()
문제 원본
https://school.programmers.co.kr/learn/courses/30/lessons/12906
728x90
반응형
LIST
'Develope > Coding Test' 카테고리의 다른 글
[Programmers] 올바른 괄호 - Java (배열 or 스택) (0) | 2022.08.24 |
---|---|
[Programmers] 기능 개발 - Java (스택 / 큐) (0) | 2022.08.23 |
[Programmers] 완주하지 못한 선수 - Java (0) | 2022.08.18 |
[Programmers] 신고 결과 받기 - Java (0) | 2022.08.12 |
[Programmers] 폰켓몬 - Java (0) | 2022.08.12 |