๊ด€๋ฆฌ ๋ฉ”๋‰ด

Unfazedโ—๏ธ๐ŸŽฏ

๋ฐฑ์ค€ 25556 ํฌ์Šคํƒ ๋ณธ๋ฌธ

๋ฌธ์ œ ํ•ด๊ฒฐ (PS)/๋ฌธ์ œ ํ’€์ด

๋ฐฑ์ค€ 25556 ํฌ์Šคํƒ

9taetae9 2023. 12. 18. 15:03
728x90

์ฒซ ์ ‘๊ทผ ๋ฐฉ์‹ (์˜ค๋‹ต)

4๊ฐœ์˜ ์Šคํƒ์œผ๋กœ ๋ถ„๋ฆฌํ•˜์ง€ ์•Š๊ณ  ๋‹จ์ˆœํžˆ ์ˆœ์—ด์˜ ์˜ค๋ฆ„์ฐจ์ˆœ์ด ๋Š๊ธธ ๋•Œ๋งˆ๋‹ค ๋‹ค๋ฅธ ์Šคํƒ์— ๋‹ด์•„์•ผ๋œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์—ฌ ์Šคํƒ ์นด์šดํŠธ๋ฅผ ์ฆ๊ฐ€์‹œํ‚ค๊ณ  ์Šคํƒ ์นด์šดํŠธ 4์ดˆ๊ณผ์‹œ NO๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ๋กœ์ง์œผ๋กœ ๊ตฌํ˜„.

 

์ž˜๋ชป๋œ ์ด์œ  : ํ•œ ๋ฒˆ ์˜ค๋ฆ„์ฐจ์ˆœ์ด ๋Š๊ธฐ๋ฉด ํ•ด๋‹น ์Šคํƒ์„ ์žฌ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ. 

 

๊ตฌ๊ธ€๋ง ์ดํ›„์— ๋‹ค์‹œ ์ ‘๊ทผ

1. ์ˆœ์—ด์„ ๋ฐฐ์—ด๋ฆฌ์ŠคํŠธ์— ๋‹ด๊ธฐ 

ArrayList<Integer> numlist = new ArrayList<>();

for(int i=0; i<N; i++){
    numlist.add(sc.nextInt());
}

2. 4๊ฐœ์˜ ์Šคํƒ ๊ณต๊ฐ„ ์ƒ์„ฑ ํ›„ ๋น„๊ต๋ฅผ ์œ„ํ•œ ์ดˆ๊ธฐ๊ฐ’๋“ค์„ ๋„ฃ์–ด์ค€๋‹ค.

ArrayList<Stack<Integer>> stackList = new ArrayList<>();
for(int i=0; i<4; i++) {
    stackList.add(new Stack<>());
    stackList.get(i).add(Integer.MIN_VALUE);
}

 

3. ์ˆœ์—ด๋“ค์˜ ์ˆ˜๋ฅผ ์ˆœ์„œ๋Œ€๋กœ ์Šคํƒ์— ๋‹ด๋Š” ๋กœ์ง ๊ตฌํ˜„ 

cleanFlag => ์ฒญ์†Œ ๊ฐ€๋Šฅ ์—ฌ๋ถ€    

placeInStack(num, stackList) => ํ•ด๋‹น num์„ stack ์ค‘ ํ•˜๋‚˜์— ๋‹ด์„ ์ˆ˜ ์žˆ์œผ๋ฉด true, ์—†๋‹ค๋ฉด false

boolean cleanFlag = true;
for(int num : numlist){
    if(!placeInStack(num, stackList)){
        cleanFlag = false;
        break;
    }
}

 

4. ์ˆœ์—ด์˜ ํ•ด๋‹น ์ˆ˜๋ฅผ 4๊ฐœ์˜ ์Šคํƒ๋“ค ์ค‘ ํ•˜๋‚˜์— ๋„ฃ์„ ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์ธ

i๋ฒˆ์งธ stack์˜ ๊ผญ๋Œ€๊ธฐ ๊ฐ’๋ณด๋‹ค ์ˆœ์—ด์˜ ์ˆ˜๊ฐ€ ํด ๊ฒฝ์šฐ ์Šคํƒ์— ๋‹ด์„ ์ˆ˜ ์žˆ๋‹ค. 4๊ฐœ์˜ ์Šคํƒ ์–ด๋А๊ณณ์—๋„ ๋‹ด์„ ์ˆ˜ ์—†์„ ๊ฒฝ์šฐ false ๋ฆฌํ„ด.

public static boolean placeInStack(int num, ArrayList<Stack<Integer>> stackList){
    for(Stack<Integer> stack : stackList){
        if(num > stack.peek()) {
            stack.push(num);
            return true;
        }
    }
    return false;
}

 

 

์ „์ฒด ์ฝ”๋“œ

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

public class Main {
    public static void main(String[] args) {
        int N;
        Scanner sc = new Scanner(System.in);
        N = sc.nextInt();

        ArrayList<Integer> numlist = new ArrayList<>();

        for(int i=0; i<N; i++){
            numlist.add(sc.nextInt());
        }

        ArrayList<Stack<Integer>> stackList = new ArrayList<>();
        for(int i=0; i<4; i++) {
            stackList.add(new Stack<>());
            stackList.get(i).add(Integer.MIN_VALUE);
        }

        boolean cleanFlag = true;
        for(int num : numlist){
            if(!placeInStack(num, stackList)){
                cleanFlag = false;
                break;
            }
        }

        System.out.println(cleanFlag ? "YES" : "NO");
    }

    public static boolean placeInStack(int num, ArrayList<Stack<Integer>> stackList){
        for(Stack<Integer> stack : stackList){
            if(num > stack.peek()) {
                stack.push(num);
                return true;
            }
        }
        return false;
    }
}

728x90