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

Binary Journey

[ํ…Œ์ฝ”ํ…Œ์ฝ”1.5 2-05] ๋ง‰๋Œ€๊ธฐ ๋ณธ๋ฌธ

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

[ํ…Œ์ฝ”ํ…Œ์ฝ”1.5 2-05] ๋ง‰๋Œ€๊ธฐ

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

 

๋ฌธ์ œ

 

์ถœ์ฒ˜: ๋ฐฑ์ค€ - ๋ง‰๋Œ€๊ธฐ

 

๋‚ด์šฉ

 

์•„๋ž˜ ๊ทธ๋ฆผ์ฒ˜๋Ÿผ ๋†’์ด๋งŒ ๋‹ค๋ฅด๊ณ  (๊ฐ™์€ ๋†’์ด์˜ ๋ง‰๋Œ€๊ธฐ๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์Œ) ๋ชจ์–‘์ด ๊ฐ™์€ ๋ง‰๋Œ€๊ธฐ๋ฅผ ์ผ๋ ฌ๋กœ ์„ธ์šด ํ›„, ์™ผ์ชฝ๋ถ€ํ„ฐ ์ฐจ๋ก€๋กœ ๋ฒˆํ˜ธ๋ฅผ ๋ถ™์ธ๋‹ค. ๊ฐ ๋ง‰๋Œ€๊ธฐ์˜ ๋†’์ด๋Š” ๊ทธ๋ฆผ์—์„œ ๋ณด์ธ ๊ฒƒ์ฒ˜๋Ÿผ ์ˆœ์„œ๋Œ€๋กœ 6, 9, 7, 6, 4, 6 ์ด๋‹ค. ์ผ๋ ฌ๋กœ ์„ธ์›Œ์ง„ ๋ง‰๋Œ€๊ธฐ๋ฅผ ์˜ค๋ฅธ์ชฝ์—์„œ ๋ณด๋ฉด ๋ณด์ด๋Š” ๋ง‰๋Œ€๊ธฐ๊ฐ€ ์žˆ๊ณ  ๋ณด์ด์ง€ ์•Š๋Š” ๋ง‰๋Œ€๊ธฐ๊ฐ€ ์žˆ๋‹ค. ์ฆ‰, ์ง€๊ธˆ ๋ณด์ด๋Š” ๋ง‰๋Œ€๊ธฐ๋ณด๋‹ค ๋’ค์— ์žˆ๊ณ  ๋†’์ด๊ฐ€ ๋†’์€ ๊ฒƒ์ด ๋ณด์ด๊ฒŒ ๋œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๊ทธ๋ฆผ๊ณผ ๊ฐ™์€ ๊ฒฝ์šฐ์—” 3๊ฐœ(6๋ฒˆ, 3๋ฒˆ, 2๋ฒˆ)์˜ ๋ง‰๋Œ€๊ธฐ๊ฐ€ ๋ณด์ธ๋‹ค.

graph

N๊ฐœ์˜ ๋ง‰๋Œ€๊ธฐ์— ๋Œ€ํ•œ ๋†’์ด ์ •๋ณด๊ฐ€ ์ฃผ์–ด์งˆ ๋•Œ, ์˜ค๋ฅธ์ชฝ์—์„œ ๋ณด์•„์„œ ๋ช‡ ๊ฐœ๊ฐ€ ๋ณด์ด๋Š”์ง€๋ฅผ ์•Œ์•„๋‚ด๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜๋ ค๊ณ  ํ•œ๋‹ค.

 

 

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

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

์–ด๋–ค ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ ์šฉํ•˜๋ ค ํ–ˆ๋‚˜์š”?

์Šคํƒ์„ ์‚ฌ์šฉํ•œ๋‹ค.

์ ์šฉ ๊ทผ๊ฑฐ๋Š” ๋ฌด์—‡์ธ๊ฐ€์š”?

๊ฐ€์žฅ ๊ฐ€๊นŒ์šด, ํ˜น์€ ๊ฐ€์žฅ ์ตœ๊ทผ์˜ ๊ฐ’์„ ๋น„๊ตํ•  ๋•Œ ์Šคํƒ์ด ์šฉ์ดํ•˜๋‹ค.

ํ’€์ด

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

์‹œ์ž‘ ์‹œ๊ฐ ์ข…๋ฃŒ ์‹œ๊ฐ ์ด ์†Œ์š” ์‹œ๊ฐ„
17:45 17:56 11๋ถ„

 

๋ฌธ์ œ ๋ถ„์„

 

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

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

 

์ฒซ ๋ฒˆ์งธ ์ค„์—๋Š” ๋ง‰๋Œ€๊ธฐ์˜ ๊ฐœ์ˆ˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ •์ˆ˜ N (2 ≤ N ≤ 100,000)์ด ์ฃผ์–ด์ง€๊ณ  ์ด์–ด์ง€๋Š” N์ค„ ๊ฐ๊ฐ์—๋Š” ๋ง‰๋Œ€๊ธฐ์˜ ๋†’์ด๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ •์ˆ˜ h(1 ≤ h ≤ 100,000)๊ฐ€ ์ฃผ์–ด์ง„๋‹ค.

6
6
9
7
6
4
6

 

์˜ค๋ฅธ์ชฝ์—์„œ N๊ฐœ์˜ ๋ง‰๋Œ€๊ธฐ๋ฅผ ๋ณด์•˜์„ ๋•Œ, ๋ณด์ด๋Š” ๋ง‰๋Œ€๊ธฐ์˜ ๊ฐœ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

3

 

 

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

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

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

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

soltion() {
    // 1. ๋ง‰๋Œ€๊ธฐ ๊ฐœ์ˆ˜ int N ๋ฐ›๊ธฐ
    // 2. ์Šคํƒ ์ƒ์„ฑ
    for (int i = 0; i < N; i++) {
        // 3. ๋ง‰๋Œ€๊ธฐ ๋†’์ด int h ๋ฐ›๊ธฐ
        while (์Šคํƒ์— ๊ฐ’ ์žˆ๊ณ  h > top ์ผ๋•Œ) {
            stack.pop();
        }

        if (์Šคํƒ์ด ๋น„์–ด์žˆ๊ฑฐ๋‚˜ h < top ์ด๋ฉด) {
            stack.push(h);
        }
    }
    System.out.println(stack.size());
}

 

๊ตฌํ˜„

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 bufferedReader = new BufferedReader(new InputStreamReader(System.in));
        int N = Integer.parseInt(bufferedReader.readLine());
        Stack<Integer> stack = new Stack<>();
        for (int i = 0; i < N; i++) {
            int h  = Integer.parseInt(bufferedReader.readLine());
            while (!stack.isEmpty() && h > stack.peek()) {
                stack.pop();
            }
            if (stack.isEmpty() || h < stack.peek()) {
                stack.push(h);
            }
        }
        System.out.println(stack.size());
    }
}

 

์š”์•ฝํ•˜๊ธฐ

  • ์ด๊ฒŒ ๋ฐ”๋กœ ๋ชจ๋…ธํ† ๋‹‰ ์Šคํƒ..!
๋ฐ˜์‘ํ˜•