우주먼지

💡 오름차순 수열 구현

임의의 수열을 스택에 넣었다가 출력하는 방식으로 오름차순 수열을 출력할 수 있는지 확인.

출력할 수 있다면 push와 pop 연산을 어떤 순서로 수행해야 하는지 알아내는 프로그램 작성.

push 연산은 +, pop 연산은 -, 불가능 할 때는 NO 출력.

 

 static int AA = 5;
 static int[] BB = {3,4,5,6,7};

    public static void main(String[] args) {
//        average(A, B);
        stack(AA, BB);
    }

    // Stack의 오름차순 수열 구현
    // 수열의 개수 a, 수열[] b
    public static String stack(int a, int[] b) {
        int[] A = new int[a];

        for (int i=0; i<a; i++) {
            A[i] = b[i];
        }

        Stack<Integer> stack = new Stack<>();
        StringBuffer bf = new StringBuffer();

        // 오름차순의 수
        int num = 1;
        boolean flag = true;

        for (int i=0; i<A.length; i++) {
            // 현재 수열의 수
            int su = A[i];
            System.out.println("su = " + su);
            // 현재 수열 값 >= 오름차순의 자연수
            // pop()을 수행해 수열을 꺼낸다
            if (su >= num) {
                // push
                while (su >= num) {
                    stack.push(num++);
                    bf.append("+\n");
                }
                stack.pop();
                bf.append("-\n");
                // 현재 수열값 < 오름자순의 자연수
                // pop()을수행해 수열을 꺼낸다
            } else {
                int n = stack.pop();
                // 스택의 가장 위의 수가 만들어야 하는 수열의 수보다 크면 수열 출력 불가
                if (n > su) {
                    System.out.println("NO");
                    flag = false;
                    break;

                } else {
                    bf.append("-\n");
                }
            }
        }
        if (flag) {
            System.out.println(bf.toString());
        }
        return bf.toString();
    }

'Data Architect > Algorithm' 카테고리의 다른 글

Bubble Sort  (0) 2023.03.08
Stack을 이용한 오큰수 구현  (1) 2023.03.08
DFS(Recursion, Stack) & BFS(Queue) 구현  (1) 2023.03.07
Queue 구현  (0) 2023.03.07
Stack 구현  (0) 2023.03.07
profile

우주먼지

@o귤o

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

검색 태그