728x90
반응형
[프로그래머스] 코딩테스트 연습 -> 스택/큐 -> 같은 숫자는 싫어
https://school.programmers.co.kr/learn/courses/30/lessons/12906
해결 과정
세 개의 해결법을 찾았으므로 소스 코드와 함께 해결과정을 살펴보자.
소스 코드
(1) List형을 int배열로 변환
import java.util.*;
public class Solution {
public int[] solution(int []arr) {
List<Integer> list = new ArrayList();
int tmp = -1;
for (int i=0; i<arr.length; i++) {
if (tmp != arr[i]) {
list.add(arr[i]);
tmp = arr[i];
}
}
int[] answer = new int[list.size()];
for(int i = 0; i<list.size();i++){
answer[i] = list.get(i);
}
System.out.println(answer);
return answer;
}
}
(2) return 값을 List<Integer>로 변환
import java.util.*;
public class Solution {
public List<Integer> solution(int []arr) {
List<Integer> answer = new ArrayList<>();
int tmp = -1;
for (int i=0; i<arr.length; i++) {
if (tmp != arr[i]) {
answer.add(arr[i]);
tmp = arr[i];
}
}
return answer;
}
}
이렇게 하면 (1)에서 ArrayList의 값을 int 배열에 넣는 과정을 없앨 수 있다.
(3) Stack 사용
import java.util.*;
public class Solution {
public int[] solution(int []arr) {
Stack<Integer> stack = new Stack<>();
for(int i : arr) {
if(stack.isEmpty()) {
stack.push(i);
}else if(stack.peek() != i) {
stack.push(i);
}
}
int[] answer = new int[stack.size()];
for(int i= stack.size()-1;i>=0;i--) {
answer[i] = stack.pop();
}
return answer;
}
}
peek(i) 는 스택에서 꺼내는 것이고 push(i) 는 스택에 넣는 것이다.
728x90
반응형
'JAVA > Programmers' 카테고리의 다른 글
JAVA 프로그래머스 [예산] 자바 Lv.1 (0) | 2023.08.19 |
---|---|
JAVA 프로그래머스 [3진법 뒤집기] 자바 Lv.1 (0) | 2023.08.11 |
JAVA 프로그래머스 [최대공약수와 최소공배수] 자바 Lv.1 (0) | 2023.08.10 |
JAVA 프로그래머스 [직사각형 별찍기] 자바 Lv.1 (0) | 2023.08.08 |
JAVA 프로그래머스 [행렬의 덧셈] 자바 Lv.1 (0) | 2023.08.08 |
댓글