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

Binary Journey

[ํ…Œ์ฝ”ํ…Œ์ฝ”1.5 2-04] ๊ณผ์ œ๋Š” ๋๋‚˜์ง€ ์•Š์•„! ๋ณธ๋ฌธ

Algorithm/ํ…Œ์ฝ”ํ…Œ์ฝ”1.5(2025)

[ํ…Œ์ฝ”ํ…Œ์ฝ”1.5 2-04] ๊ณผ์ œ๋Š” ๋๋‚˜์ง€ ์•Š์•„!

binaryJournalist 2025. 2. 21. 13:37
๋ฐ˜์‘ํ˜•
๐Ÿ’กํ…Œ์ฝ”ํ…Œ์ฝ” ์‹œ์ฆŒ 1.5 2ํšŒ ๋ชจ์ž„ off-site ๋ฌธ์ œ ํ’€์ด์ž…๋‹ˆ๋‹ค. (2025.01.19)

 

๋ฌธ์ œ

 

์ถœ์ฒ˜: ๋ฐฑ์ค€ - ๊ณผ์ œ๋Š” ๋๋‚˜์ง€ ์•Š์•„!

 

๋‚ด์šฉ

 

์„ฑ์• ๋Š” ์ด๋ฒˆ ํ•™๊ธฐ์— ์ „๊ณต์„ ์ •๋ง ๋งŽ์ด ๋“ฃ๋Š”๋‹ค. ์ด๋กœ ์ธํ•ด ๊ฑฐ์˜ ๋งค์ผ์„ ๊ณผ์ œ๋ฅผ ํ•˜๋ฉด์„œ ๋ณด๋‚ด๊ณ  ์žˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ๋„ ๊ณผ์ œ๊ฐ€ ์ค„์–ด๋“ค ๊ธฐ๋ฏธ๊ฐ€ ๋ณด์ด์ง€ ์•Š๋Š”๋ฐ, ๋ฐ”๋กœ ๋ถ„๋‹จ์œ„๋กœ ๊ณผ์ œ๊ฐ€ ์ถ”๊ฐ€๋˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๋‹คํ–‰ํžˆ ๊ณผ์ œ ์ œ์ถœ ๊ธฐํ•œ์€ ํ•™๊ธฐ๊ฐ€ ๋๋‚  ๋•Œ๊นŒ์ง€์ด๋‹ค. ๋„ˆ๋ฌด๋‚˜๋„ ๋งŽ์€ ๊ณผ์ œ๋ฅผ ํ•˜๋‹ค๊ฐ€ ๋ฏธ์ณ๋ฒ„๋ฆฐ ์„ฑ์• ๋Š” ์•„๋ž˜์™€ ๊ฐ™์€ ๊ทœ์น™์œผ๋กœ ๊ณผ์ œ๋ฅผ ํ•ด ๋‚˜๊ฐ€๊ณ  ์žˆ๋‹ค.

  1. ๊ณผ์ œ๋Š” ๊ฐ€์žฅ ์ตœ๊ทผ์— ๋‚˜์˜จ ์ˆœ์„œ๋Œ€๋กœ ํ•œ๋‹ค. ๋˜ํ•œ ๊ณผ์ œ๋ฅผ ๋ฐ›์œผ๋ฉด ๋ฐ”๋กœ ์‹œ์ž‘ํ•œ๋‹ค.
  2. ๊ณผ์ œ๋ฅผ ํ•˜๋˜ ๋„์ค‘ ์ƒˆ๋กœ์šด ๊ณผ์ œ๊ฐ€ ๋‚˜์˜จ๋‹ค๋ฉด, ํ•˜๋˜ ๊ณผ์ œ๋ฅผ ์ค‘๋‹จํ•˜๊ณ  ์ƒˆ๋กœ์šด ๊ณผ์ œ๋ฅผ ์ง„ํ–‰ํ•œ๋‹ค.
  3. ์ƒˆ๋กœ์šด ๊ณผ์ œ๊ฐ€ ๋๋‚ฌ๋‹ค๋ฉด, ์ด์ „์— ํ•˜๋˜ ๊ณผ์ œ๋ฅผ ์ด์ „์— ํ•˜๋˜ ๋ถ€๋ถ„๋ถ€ํ„ฐ ์ด์–ด์„œ ํ•œ๋‹ค. (์„ฑ์• ๋Š” ๊ธฐ์–ต๋ ฅ์ด ์ข‹๊ธฐ ๋•Œ๋ฌธ์— ์•„๋ฌด๋ฆฌ ๊ธด ์‹œ๊ฐ„์ด ์ง€๋‚˜๋„ ๋ณธ์ธ์ด ํ•˜๋˜ ๋ถ€๋ถ„์„ ๊ธฐ์–ตํ•  ์ˆ˜ ์žˆ๋‹ค.)

์„ฑ์• ๋Š” ๊ณผ์ œ๋ฅผ ๋ฐ›์ž๋งˆ์ž ์ด ๊ณผ์ œ๊ฐ€ ๋ช‡ ๋ถ„์ด ๊ฑธ๋ฆด์ง€ ์ •ํ™•ํ•˜๊ฒŒ ์•Œ ์ˆ˜ ์žˆ๊ณ , ์„ฑ์• ๊ฐ€ ์ œ์ถœํ•œ ๊ณผ์ œ๋Š” ๋ฌด์กฐ๊ฑด ๋งŒ์ ์„ ๋ฐ›๋Š”๋‹ค.

์„ฑ์• ๋Š” ์ด๋ฒˆ ํ•™๊ธฐ์— ์ž๊ธฐ๊ฐ€ ๋ฐ›์„ ๊ณผ์ œ ์ ์ˆ˜๋ฅผ ์˜ˆ์ƒํ•ด๋ณด๊ณ  ์‹ถ๋‹ค. ํ•˜์ง€๋งŒ ๊ณผ์ œ ์ ์ˆ˜๋ฅผ ์˜ˆ์ƒํ•˜๋Š” ์ง€๊ธˆ๋„ ๊ณผ์ œ๊ฐ€ ์ถ”๊ฐ€๋˜๊ณ  ์žˆ๊ธฐ์— ์—ฌ์œ ๋ฅผ ๋ถ€๋ฆด ์ˆ˜๊ฐ€ ์—†๋‹ค. ์—ฌ๋Ÿฌ๋ถ„์ด ์„ฑ์• ๊ฐ€ ๋ฐ›์„ ๊ณผ์ œ ์ ์ˆ˜๋ฅผ ๊ตฌํ•ด์ฃผ์ž!

 

 

๊ธฐ๋กํ•˜๊ธฐ

๐Ÿ’ก ์–ด๋””๊นŒ์ง€ ์ƒ๊ฐํ•ด๋ดค๋Š”์ง€ ๋‹จ๊ณ„์ ์œผ๋กœ ๊ธฐ๋กํ•ด๋ด…๋‹ˆ๋‹ค.


๊ณผ์ œ class ๋งŒ๋“ค์–ด์„œ ํ•ด๋ณด๋Š” ๊ฑด ์–ด๋–จ๊นŒ.

ํ’€์ด

ํ’€์ด ์‹œ๊ฐ„

์‹œ์ž‘ ์‹œ๊ฐ ์ข…๋ฃŒ ์‹œ๊ฐ ์ด ์†Œ์š” ์‹œ๊ฐ„
00:00 00:35 35๋ถ„

 

๋ฌธ์ œ ๋ถ„์„

 

์ œ์•ฝ ์‚ฌํ•ญ ํŒŒ์•… & ์ž…๋ ฅ๊ฐ’ ๋ถ„์„

๐Ÿ’ก ์ž…๋ ฅ๊ฐ’์„ ๋ถ„์„ํ•˜๋ฉด ๋ฌธ์ œ์—์„œ ์š”๊ตฌํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ฐ„์ ‘์ ์œผ๋กœ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

์ฒซ์งธ ์ค„์— ์ด๋ฒˆ ํ•™๊ธฐ๊ฐ€ ๋ช‡ ๋ถ„์ธ์ง€๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ •์ˆ˜ N์ด ์ฃผ์–ด์ง„๋‹ค. (1 ≤ N ≤ 1,000,000)

๋‘๋ฒˆ์งธ ์ค„๋ถ€ํ„ฐ N์ค„ ๋™์•ˆ์€ ํ•™๊ธฐ๊ฐ€ ์‹œ์ž‘ํ•˜๊ณ  N๋ถ„์งธ์— ์ฃผ์–ด์ง„ ๊ณผ์ œ์˜ ์ •๋ณด๊ฐ€ ์•„๋ž˜์˜ ๋‘ ๊ฒฝ์šฐ ์ค‘ ํ•˜๋‚˜๋กœ ์ฃผ์–ด์ง„๋‹ค.

  • 1 A T: ๊ณผ์ œ์˜ ๋งŒ์ ์€ A์ ์ด๊ณ , ์„ฑ์• ๊ฐ€ ์ด ๊ณผ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š”๋ฐ T๋ถ„์ด ๊ฑธ๋ฆฐ๋‹ค. A์™€ T๋Š” ๋ชจ๋‘ ์ •์ˆ˜์ด๋‹ค. (1 ≤ A ≤ 100, 1 ≤ T ≤ 1,000,000)
  • 0: ํ•ด๋‹น ์‹œ์ ์—๋Š” ๊ณผ์ œ๊ฐ€ ์ฃผ์–ด์ง€์ง€ ์•Š์•˜๋‹ค.
3
1 100 3
0
0

 

์„ฑ์• ๊ฐ€ ๋ฐ›์„ ๊ณผ์ œ ์ ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

100
  • 1๋ถ„์งธ: 100์ ์งœ๋ฆฌ ๊ณผ์ œ 1์ด ์ฃผ์–ด์ง€๊ณ  ์ด ๊ณผ์ œ๋ฅผ ํ•˜๋Š”๋ฐ 3๋ถ„์ด ๊ฑธ๋ฆฐ๋‹ค. ๊ณผ์ œ๋ฅผ ๋ฐ›์ž๋งˆ์ž ์‹œ์ž‘ํ–ˆ์œผ๋ฏ€๋กœ ๊ณผ์ œ 1์ด ๋๋‚˜๋Š”๋ฐ๋Š” ์ด์ œ 2๋ถ„ ๋‚จ์•˜๋‹ค.
  • 2๋ถ„์งธ: ์ƒˆ๋กœ์šด ๊ณผ์ œ๊ฐ€ ์ฃผ์–ด์ง€์ง€ ์•Š์•˜์œผ๋ฏ€๋กœ ๊ณผ์ œ 1์„ ์ด์–ด์„œ ํ•œ๋‹ค.
  • 3๋ถ„์งธ: ์ƒˆ๋กœ์šด ๊ณผ์ œ๊ฐ€ ์ฃผ์–ด์ง€์ง€ ์•Š์•˜์œผ๋ฏ€๋กœ ๊ณผ์ œ 1์„ ์ด์–ด์„œ ํ•œ๋‹ค. ์ด ์‹œ์ ์— ๊ณผ์ œ 1์ด ๋๋‚˜์„œ 100์ ์„ ํš๋“ํ•œ๋‹ค.

 

์˜์‚ฌ ์ฝ”๋“œ ์ž‘์„ฑ

๐Ÿ’ก ์˜์‚ฌ ์ฝ”๋“œ๋Š” ๋™์ž‘ ์ค‘์‹ฌ์œผ๋กœ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ’ก ์˜์‚ฌ ์ฝ”๋“œ๋Š” ๋ฌธ์ œ ํ•ด๊ฒฐ ์ˆœ์„œ๋กœ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ’ก ์˜์‚ฌ ์ฝ”๋“œ๋ฅผ ์ถฉ๋ถ„ํžˆ ํ…Œ์ŠคํŠธํ•ด๋ด…๋‹ˆ๋‹ค.

solution() {
    // 1. N๋ถ„ ์ž…๋ ฅ ๋ฐ›๊ธฐ
    // 2. ์Šคํƒ ์ƒ์„ฑ
    // 3. ๋ฌธ์ œ ์žˆ์„ ์‹œ ์›๋ž˜ ์žˆ๋˜ ์‹œ๊ฐ„์— -1๋ถ„ ์ฒ˜๋ฆฌํ•˜๊ณ  ์Šคํƒ์— ๋‹ด๊ธฐ
    // 4. ๋ฌธ์ œ ์—†์„ ์‹œ ์Šคํƒ top -1๋ถ„ ์ฒ˜๋ฆฌํ•˜๊ธฐ
    // 5. 0๋ถ„์ผ ์‹œ ์ ์ˆ˜+, ์Šคํƒ์—์„œ ๊บผ๋‚ด๊ธฐ
}

๊ตฌํ˜„

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

public class Extra03IHateHomework {  
    public static void main(String[] args) throws IOException {  
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));  
        StringTokenizer st;  
        int N = Integer.parseInt(bufferedReader.readLine());  
        Stack<Homework> stack = new Stack<>();  
        int answer = 0;  
        for (int i = 0; i < N; i++) {  
            st  = new StringTokenizer(bufferedReader.readLine());  
            int code = Integer.parseInt(st.nextToken());  
            if (code == 1) {  
                int score = Integer.parseInt(st.nextToken());  
                int duration = Integer.parseInt(st.nextToken());
                stack.push(new Homework(score, duration - 1));  
            } else {  
                if (!stack.isEmpty()) {  
                    Homework homework = stack.peek();  
                    homework.doHomework();  
                }  
            }  
            if (!stack.isEmpty() && 0 == stack.peek().getDuration()) {  
                answer += stack.pop().getScore();  
            }  
        }  
        System.out.println(answer);  
    }  

    public static class Homework {  
        private int score;  
        private int duration;  

        public Homework(int score, int duration) {  
            this.score = score;  
            this.duration = duration;  
        }  
        public int getScore() {  
            return this.score;  
        }  
        public int getDuration() {  
            return this.duration;  
        }  
        public void doHomework() {  
            this.duration--;  
        }    }  
}
  • ๊ต‰์žฅํžˆ ๋งˆ์Œ์— ๋“ค์ง€ ์•Š์•„!
๋ฐ˜์‘ํ˜•