자바 초급문제로 맨땅에 해딩하기

자바 초급문제 5-1. 같은 숫자는 싫어 다시 접근하기.

Jungsoomin :) 2020. 4. 11. 01:25

프로그래머스(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