Algorithm & 자료구조/백준

[JAVA] 백준 25556번 포스텍

불타는고굼이 2023. 10. 16. 14:08
반응형

문제링크

 https://www.acmicpc.net/problem/25556

 

25556번: 포스택

포닉스가 순열을 청소할 수 있으면 YES, 불가능하다면 NO를 출력한다.

www.acmicpc.net

위 문제는 stack을 이용해서 푸는 골드4 단계 문제이다

아래 stack 참조

 

2023.10.16 - [Language/Java] - Stack

 

Stack

Stack 이란 ? 스택(stack)은 제한적으로 접근할 수 있는 나열 구조이다. 사전적 정의는 '쌓다' 상자에 물건을 쌓아 올리듯이 데이터를 쌓는 구조로 그 접근 방법은 언제나 목록의 끝에서만 일어난다.

burning-go9me.tistory.com

 

내 풀이

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
import java.util.Stack;

public class Main {
    public static void main (String[] args) {
        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();
        int sizeOfStack = 4;
        List<Integer> nums = new ArrayList<Integer>();

        for (int i = 0; i < N; i++) {
            nums.add(Integer.parseInt(sc.next()));
        }

        List<Stack<Integer>> stacks = new ArrayList<>();

        // 스텍 초기화
        for ( int i = 0 ; i < sizeOfStack; i ++ ) {
            stacks.add(new Stack<>());
            stacks.get(i).push(0);
        }

        String result = getResult(N, nums, sizeOfStack, stacks);
        System.out.println(result);

    }

    private static String getResult(int N, List<Integer> nums, int sizeOfStack, List<Stack<Integer>> stacks) {
        String result = "YES";
        int num;
        for ( int i = 0 ; i < N ; i ++ ) {
            num = nums.get(i);
            for ( int j = 0 ; j< sizeOfStack ; j ++ ) {
                if ( stacks.get(j).peek() < num){
                    stacks.get(j).push(num);
                    num = 0;
                    break;
                }
            }
            if ( num != 0 ){
                result = "NO";
            }
        }
        return result;
    }
}

 

728x90
반응형