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

자바 Level 2 문제, 5-1. 탑 진행 중.

Jungsoomin :) 2020. 5. 2. 01:12

프로그래머스(https://programmers.co.kr/learn/courses/30/lessons/42588)

자바 Level2 문제의 탑 이다.

 

 

일단, 2h정도 적어보며 생각을 해보았는데, while문을 돌려서 list와 같이 지우면서 접근해 보려고 하는 중이다. 

heights 배열의 인덱스 탐색에서 문제가 생겨서 그 부분에 대한 보완이 필요하다는 것을 느끼고 있다.

 

일단 더 진행해보고 부딪쳐보면서 겪어야 윤곽이 잡힐 듯 하다. Queue를 가지고 진행해보고 싶은 마음이 큰데, 일단 여러방면으로 진행을 해보려고 계획 중에 있기에 많이 거쳐봐야할 듯 하다.

 

 

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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
package programmers_탑;
 
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.Stack;
 
public class subClass {
    public int[] solution(int[] heights) {
        int[] answer = {};    
        
        List<Integer> list = new LinkedList<Integer>();
        List<Integer> answerList = new ArrayList<Integer>();
        Stack<Integer> stack = new Stack<Integer>();
        
        for(int i=1 ; i<=heights.length;i++) {
            list.add(heights[heights.length-i]);
        }
        
        /*for(int i=0; i<list.size();i++) {
            System.out.println(list.get(i));
        }*/
        
        while(!list.isEmpty()) {
            stack.push(list.get(0)); list.remove(0);
            
            for(int i=0; i<list.size();i++) {
                if(stack.peek().intValue() <list.get(i).intValue()) {
                    stack.pop(); answerList.add(i);
                    break;
                }
            }
            
        }
        
        
        answer =new int[answerList.size()];
        for(int i=0; i<answerList.size();i++) {
            answer[i] = answerList.get(i);
            System.out.println(answer[i]);
        }
        
        return answer;
    }
    
}
 
cs