반응형
프로그래머스 같은 숫자는 싫어 - JAVA
문제 설명
- 배열 arr가 주어진다. 각 원소는 숫자 0부터 9까지로 이루어져 있다.
- 배열 arr에서 연속적으로 나타나는 숫자는 제거하고 남은 수들을 retrun.
제한 사항
- 배열 arr의 크기 : 1,000,000 이하의 자연수
- 배열 arr의 원소의 크기 : 0보다 크거나 같고 9보다 작거나 같은 정수
문제 풀이
- 이전 숫자와 같은지 비교하기 편하게 스택을 사용한다.
- 스택이 빈경우와 스택의 맨위(이전 숫자)와 다른 경우 스택에 추가한다.
- 스택의 숫자들을 정답 배열로 옮겨 return.
- 스택에 향상된 for문을 사용하면 스택 가장 아래 수 부터 탐색 가능하다.
소스 코드
import java.util.*;
public class Solution {
public int[] solution(int []arr) {
Stack<Integer> stack = new Stack<>();
for (int n : arr) {
if (stack.isEmpty() || stack.peek() != n) {
stack.add(n);
}
}
int[] answer = new int[stack.size()];
int index = 0;
for (int n : stack) {
answer[index++] = n;
}
return answer;
}
}
반응형
'알고리즘(Algorithm) > 프로그래머스(Programmers)' 카테고리의 다른 글
[프로그래머스] 두 정수 사이의 합 - JAVA (0) | 2021.10.26 |
---|---|
[프로그래머스] 나누어 떨어지는 숫자 배열 - JAVA (0) | 2021.10.26 |
[프로그래머스] [1차] 다트 게임 - JAVA (0) | 2021.10.25 |
[프로그래머스] 가운데 글자 가져오기 - JAVA (0) | 2021.10.25 |
[프로그래머스] [1차] 비밀지도 - JAVA (0) | 2021.10.25 |