프로그래머스(https://programmers.co.kr/learn/courses/30/lessons/12906)
자바 + 초급문제의 같은 숫자는 싫어 이다.
Stack 을 이용해서 다시 접근했다. 전보다 조금 더 성장한 것 같아서 기쁘다 :)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
package programmers_같은숫자는싫어;
import java.util.*;
public class subClass {
public int[] solution(int[] arr) {
// arr은 숫자배열 , 연속적 숫자는 하나만 남기고 남는 숫자만 return 자연 수만 들어옴
int[] answer = {};
Stack<Integer> stack = new Stack<>();
stack.push(-1);
for (int i = 0; i < arr.length; i++) {
if (stack.peek() != arr[i]) {// 최근에 들어온 수와 arr의 인덱스 값이 다르면
stack.push(arr[i]);// 집어넣는다.
} else if (stack.peek() == arr[i]) {// 반대로 들어온수랑 arr의 인덱스값이 다르면
continue;
}
} // List 를 int[] 변환해야함 stack 의 0 에는 -1 이 들어있어서 문제가 됨. 즉 -1 을 제외하고 넣어줘야한다.
answer = new int[stack.size() - 1];// 일단 스택의 크기-1 은 answer
int count = 0;// for문안의 카운트 변수
for (int check : stack) {
if (check != -1) {
answer[count] += check;// 이제 1씩 증가시켜야함
count++;
} else if (count == answer.length) {
break;
}
}
return answer;
}
}
|
cs |
'자바 초급문제로 맨땅에 해딩하기' 카테고리의 다른 글
자바 초급문제 18. 나누어떨어지는숫자배열 (0) | 2020.04.11 |
---|---|
자바 초급문제 17. 가운데 글자 가져오기 (0) | 2020.04.11 |
자바 초급문제 8-1. 핸드폰 번호 가리기 다시접근하기 (0) | 2020.04.11 |
자바 초급문제 1-1. 문자열다루기 다시접근하기 (0) | 2020.04.11 |
자바 초급문제 16. 소수찾기 진행. (0) | 2020.04.10 |