๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
  • ์žฅ์›์ต ๊ธฐ์ˆ ๋ธ”๋กœ๊ทธ
๐Ÿ’ป Computer Science/- Data Structure, Algorithm

[์•Œ๊ณ ๋ฆฌ์ฆ˜ PS] ๋ฐฑ์ค€ 1874 ์Šคํƒ ์ˆ˜์—ด Java ๋ฌธ์ œ ํ’€์ด

by Wonit 2021. 1. 18.

๋ฌธ์ œ

ํ•ด๋‹น ํฌ์ŠคํŒ…์€ ๋ฐฑ์ค€์˜ 1874๋ฒˆ ์Šคํƒ ์ˆ˜์—ด ์˜ ์ ‘๊ทผ๊ณผ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•œ ๊ธ€ ์ž…๋‹ˆ๋‹ค.
์ •๋‹ต ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ํ™•์ธํ•˜์‹œ๋ ค๋ฉด solve url ์—์„œ ํ™•์ธ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

๋ฌธ์ œ

์˜ˆ์ œ ์ž…๋ ฅ & ์ถœ๋ ฅ

 

ํ•ด๊ฒฐ๋ฒ•

์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ ์ ‘๊ทผํ•ด์•ผ ํ•˜๋Š”์ง€์™€ ์–ด๋–ค ํŠธ๋ฆญ์„ ํ”ผ์• ํ– ํ• ์ง€๋ฅผ ์ƒ๊ฐํ•ด๋ณด๋Š” ์˜ค๋‹ต ํ›„๋ณด๋ฅผ ๋‚˜๋ˆ  ์ƒ๊ฐํ•ด๋ณด์ž.


์ด ๋ฌธ์ œ๋Š” ํŠน์ดํ•˜๊ฒŒ, ๋ฌธ์ œ์—์„œ ์Šคํƒ์„ ์‚ฌ์šฉํ•˜๋ผ๊ณ  ๊ถŒ์žฅํ•˜๋“ฏ ๋งํ•œ๋‹ค.


๋ฌธ์ œ์—์„œ ์ œ์‹œํ•œ ๊ทธ๋Œ€๋กœ ์Šคํƒ์„ ์‚ฌ์šฉํ•ด์„œ ์ ‘๊ทผํ•˜๋ฉด ์‰ฌ์šด ํ’€์ด๋ฅผ ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

์ด ๋ฌธ์ œ๋Š” ์Šคํƒ ๋˜๋Š” ๋ฐฐ์—ด์„ ์ด์šฉํ•ด์„œ ํ’€ ์ˆ˜ ์žˆ๋Š”๋ฐ, ๋‹ค๋ฅธ ์‚ฌ์ดํŠธ๋ฅผ ์ฐธ๊ณ ํ•ด๋ณด๋‹ˆ ๋ฐฐ์—ด์„ ์ด์šฉํ•œ ํ’€์ด๊ฐ€ ์••๋„์ ์œผ๋กœ ๋งŽ์•„์„œ ํ•„์ž๋Š” ์Šคํƒ์„ ์ด์šฉํ•ด์„œ ํ’€์–ด๋ณด๋„๋ก ํ•˜๊ฒ ๋‹ค.

์ ‘๊ทผ๋ฒ•

์Šคํƒ ์ˆ˜์—ด ๋ฌธ์ œ์—์„œ ๊ฐ€์žฅ ์–ด๋ ค์šด ๋ถ€๋ถ„์€ ๋ฐ”๋กœ ๋ฌธ์ œ๋ฅผ ์ œ๋Œ€๋กœ ํŒŒ์•…ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

  • ๋งŒ์•ฝ n์ด๋ผ๋Š” ์ˆ˜๋ฅผ ๋งŒ๋‚˜๊ฒŒ ๋œ๋‹ค๋ฉด, 1~n ๊นŒ์ง€ ์Šคํƒ์— push ํ•œ๋‹ค.
  • stack์˜ top์ด n๊ณผ ๊ฐ™์•„์ง„๋‹ค๋ฉด ์Šคํƒ์—์„œ pop ํ•œ๋‹ค.
  • n์„ stack์— push ํ•˜๋Š” ๊ณผ์ •์—์„œ ํ•œ ๋ฒˆ ๋‚˜๊ฐ„ ํ˜น์€ ๋“ค์–ด์˜จ ์ˆ˜๋Š” ์ค‘๋ณต๋˜๋ฉด ์•ˆ๋œ๋‹ค.

์ž์„ธํ•œ ์„ค๋ช…์€ ์ด๊ณณ์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

์˜ค๋‹ต ํ›„๋ณด

์˜ค๋‹ต ํ›„๋ณด๋Š” 1๊ฐ€์ง€๋กœ ๋ชจ๋“  ์ผ€์ด์Šค๋ฅผ ์ปค๋ฒ„ํ•  ์ˆ˜ ์žˆ๋‹ค.

  1. ์ž…๋ ฅ ๊ฐ’์ด ๋งˆ์ง€๋ง‰์œผ๋กœ ๋“ค์–ด์˜จ ๊ฐ’ ๋ณด๋‹ค ์ž‘์„ ๊ฒฝ์šฐ, ์Šคํƒ์˜ ์ตœ์ƒ๋‹จ์˜ ๊ฐ’๊ณผ ํ˜„์žฌ ์ž…๋ ฅ ๊ฐ’์ด ๋‹ค๋ฅผ ๋•Œ.

์ •๋‹ต ์ฝ”๋“œ

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Stack;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder();
        Stack<Integer> stack = new Stack<>();

        int n = Integer.parseInt(br.readLine());
        int cursor = 0; // ๋งˆ์ง€๋ง‰ ์ตœ์ข… ์œ„์น˜

        while(n-- > 0) {
            int input = Integer.parseInt(br.readLine());

            if(input > cursor) {
                for(int i = cursor+1; i <= input; i++ ){
                    stack.push(i);
                    sb.append("+\n");
                }
                cursor = input;
            }else if (stack.peek() != input) {
                System.out.println("NO");
                return;
            }
            stack.pop();
            sb.append("-\n");
        }
        System.out.println(sb.toString());
    }
}

์ •๋‹ต ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ํ™•์ธํ•˜์‹œ๋ ค๋ฉด solve url ์—์„œ ํ™•์ธ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

๋Œ“๊ธ€