
배열 arr에서 연속적으로 나타나는 숫자를 하나만 남기고 제거해야 한다.
이때 제거된 후 남은 수들은 배열 arr의 원소들의 순서를 유지해야 한다.
처음에는 문제를 제대로 안 읽고
set을 사용해서 중복을 제거하려고 했지만,
연속적으로 나타나는 숫자를 하나로 남기는 문제이므로 set은 사용할 수 없음을 알았다.
그래서 생각한 방법은
앞에 숫자랑 비교해서 일치하지 않는 경우에만 list에 추가하고,
마지막에 list를 arr로 바꿔 출력하는 것이었다.
정확성 테스트, 효율성 테스트 모두 통과했다.
import java.util.*;
public class Solution {
public int[] solution(int []arr) {
ArrayList<Integer> list = new ArrayList<>();
list.add(arr[0]);
for (int i = 1; i < arr.length; i++) {
if (arr[i] != arr[i - 1]) {
list.add(arr[i]);
}
}
int[] answer = new int[list.size()];
for (int i = 0; i < list.size(); i++) {
answer[i] = list.get(i);
}
// list.stream().mapToInt(i->i).toArray();
return answer;
}
}
구글링해보니 스택을 사용하는 방법도 있었다.
전체적인 플로우는 같았다.
import java.util.*;
public class Solution {
public int[] solution(int []arr) {
Stack<Integer> stack = new Stack<>();
for (int i : arr) {
if (stack.isEmpty() || !stack.peek().equals(i)) {
stack.push(i);
}
return stack.stream().mapToInt(i->i).toArray();
}
}
'Languages > Java' 카테고리의 다른 글
[프로그래머스 고득점 Kit/Java] 기능개발 (0) | 2025.04.02 |
---|---|
[BOJ 길라잡이/Java] 13일차 #1182 부분수열의 합 (0) | 2025.04.01 |
[BOJ 길라잡이/Java] 12일차 #6603 로또 (0) | 2025.03.29 |
[프로그래머스 고득점 Kit/Java] 전화번호 목록 (0) | 2025.03.29 |
[BOJ/Java] #11279 최대 힙 - PriorityQueue (0) | 2025.03.24 |

배열 arr에서 연속적으로 나타나는 숫자를 하나만 남기고 제거해야 한다.
이때 제거된 후 남은 수들은 배열 arr의 원소들의 순서를 유지해야 한다.
처음에는 문제를 제대로 안 읽고
set을 사용해서 중복을 제거하려고 했지만,
연속적으로 나타나는 숫자를 하나로 남기는 문제이므로 set은 사용할 수 없음을 알았다.
그래서 생각한 방법은
앞에 숫자랑 비교해서 일치하지 않는 경우에만 list에 추가하고,
마지막에 list를 arr로 바꿔 출력하는 것이었다.
정확성 테스트, 효율성 테스트 모두 통과했다.
import java.util.*;
public class Solution {
public int[] solution(int []arr) {
ArrayList<Integer> list = new ArrayList<>();
list.add(arr[0]);
for (int i = 1; i < arr.length; i++) {
if (arr[i] != arr[i - 1]) {
list.add(arr[i]);
}
}
int[] answer = new int[list.size()];
for (int i = 0; i < list.size(); i++) {
answer[i] = list.get(i);
}
// list.stream().mapToInt(i->i).toArray();
return answer;
}
}
구글링해보니 스택을 사용하는 방법도 있었다.
전체적인 플로우는 같았다.
import java.util.*;
public class Solution {
public int[] solution(int []arr) {
Stack<Integer> stack = new Stack<>();
for (int i : arr) {
if (stack.isEmpty() || !stack.peek().equals(i)) {
stack.push(i);
}
return stack.stream().mapToInt(i->i).toArray();
}
}
'Languages > Java' 카테고리의 다른 글
[프로그래머스 고득점 Kit/Java] 기능개발 (0) | 2025.04.02 |
---|---|
[BOJ 길라잡이/Java] 13일차 #1182 부분수열의 합 (0) | 2025.04.01 |
[BOJ 길라잡이/Java] 12일차 #6603 로또 (0) | 2025.03.29 |
[프로그래머스 고득점 Kit/Java] 전화번호 목록 (0) | 2025.03.29 |
[BOJ/Java] #11279 최대 힙 - PriorityQueue (0) | 2025.03.24 |