728x90
https://school.programmers.co.kr/learn/courses/30/lessons/12906
문제 설명
문제 풀이
import java.util.*;
public class Solution {
public int[] solution(int []arr) {
int[] answer = {};
int n = 0;
Set<Integer> set = new HashSet<>();
List<Integer> list = new LinkedList<>();
for (int i : arr) {
set.add(i);
}
set.clear();
for (int i = 0; i < arr.length; i++) {
set.add(arr[i]);
if (set.size() == 2) {
list.add(arr[--i]);
set.clear();
}
else if (set.size() < 2 && i == arr.length - 1) {
list.add(arr[i]);
}
}
answer = new int[list.size()];
for (Integer i : list) {
answer[n++] = i;
}
return answer;
}
}
처음 풀이는 Set에 숫자를 넣어 중복을 없애고 set의 사이즈가 2가 되면(중복이 아닌 숫자가 들어오면) 리스트에 추가, set을 비우는 방식으로 풀었더니 답은 나오는데 효율성 검사에서 실패했다.
import java.util.*;
public class Solution {
public int[] solution(int []arr) {
int[] answer = {};
int n = 0;
List<Integer> list = new LinkedList<>();
list.add(arr[0]);
for (int i = 1; i < arr.length; i++) {
if (arr[i] != arr[i-1]) {
list.add(arr[i]);
}
}
answer = new int[list.size()];
for (Integer i : list) {
answer[n++] = i;
}
return answer;
}
}
set을 이용하지 않고 비슷한 방식으로 다시 풀었더니 통과..

'코테 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 스킬트리 - Java (0) | 2023.07.12 |
---|---|
[프로그래머스] 문자열 내 p와 y의 개수 - Java (0) | 2023.07.12 |
[프로그래머스] 주식가격 - Java (0) | 2023.07.11 |
[프로그래머스] 의상 - Java (0) | 2023.07.05 |
[프로그래머스] 폰켓몬 - Java (0) | 2023.07.03 |