BOJ 1863 : ์Šค์นด์ด๋ผ์ธ ์‰ฌ์šด๊ฑฐ

2024. 12. 3. 15:42ยทAlgorithm

 

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

๐Ÿšฉ๋ฌธ์ œ

 

๐Ÿ”’๋ฌธ์ œํ•ด๊ฒฐ(์˜ค๋‹ต)

์ „ํ˜€ ์‰ฝ์ง€์•Š์•˜๋Š”๋ฐ.....์™œ ์‰ฌ์šด๊ฑฐ์ผ๊นŒ .....................์‰ฝ์ง€์•Š์€ ๋ฌธ์ œ์˜€๋‹ค๊ณ  ํ•œ๋‹ค...

ํ’€๊ณ ๋‚˜๋‹ˆ ๋ง‰๋Œ€๊ธฐ ๋ฌธ์ œ์™€ ๋น„์Šทํ•œ ๊ฒฐ์ธ๋ฐ ์ข€ ๋” ์ข€๋” ์–ด๋ ค์šด ๋А๋‚Œ??

 

1.์™ผ์ชฝ๋ถ€ํ„ฐ ๊ณ ๋„๊ฐ€ ๋ฐ”๋€Œ๋Š” ์ง€์ ์˜ ์ขŒํ‘œ๊ฐ€ ์ž…๋ ฅ๋˜๋ฏ€๋กœ x๊ฐ’์ด ์ค‘๋ณต๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์—†์Œ

2.๋ฆฌ์ŠคํŠธ์— y๊ฐ’๋งŒ ์ €์žฅํ•˜์—ฌ ์นด์šดํŠธ ++

3.์ฒซ๋ฒˆ์งธ ์ž…๋ ฅ๋ฐ›์€ y์˜ ์ตœ์†Ÿ๊ฐ’๊ณผ ์ตœ๋Œ“๊ฐ’์œผ๋กœ ์ง€์ •

4.for๋ฌธ์„ ๋Œ๋ฉฐ ์ตœ์†Ÿ๊ฐ’์ด ๊ฐ™๊ฑฐ๋‚˜ ์ตœ๋Œ“๊ฐ’์ด ๋ฐ”๋€Œ๊ฒŒ ๋  ๊ฒฝ์šฐ +1์”ฉ

(์ตœ์†Ÿ๊ฐ’์ด ๊ฐ™์œผ๋ฉด :๊ฐ™์€๋†’์ด๊ฑด๋ฌผ, ์ตœ๋Œ“๊ฐ’์ด ๋ฐ”๋€Œ๋ฉด : ๋‹ค๋ฅธ๋†’์ด ๊ฑด๋ฌผ)

5.y์˜ ๊ฐ’์ด 0์„ ๋งŒ๋‚˜๋ฉด ์ตœ์†Œ,์ตœ๋Œ“๊ฐ’์„ ์ดˆ๊ธฐํ™”ํ•ด์คŒ

์˜ˆ์ œ๋ฅผ ๋Œ๋ ธ์„๋•Œ ์ •๋‹ต์ด ๋‚˜์™€์„œ ์ ‘๊ทผ๋ฒ•์ด ๋งž๋Š”์ค„ ์•Œ์•˜๋‹ค๊ณ  ํ•œ๋‹ค ใ…‡ใ……ใ…‡ ํ•˜์ง€๋งŒ ์ œ์ถœํ•˜๊ณ ์„œ 7%?์—์„œ ๋ฐ”๋กœ ์˜ค๋‹ต

์ค‘๊ฐ„์— ๊ณ„์† ์ˆ˜์‹์„ ๋ฐ”๊ฟ”๋ดค์ง€๋งŒ ํ‹€๋ฆผ์—ฐ์†์ด์—ฌ์„œ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ถ„๋ฅ˜๋ฅผ ๋ดค๋”๋‹ˆ ์Šคํƒ์œผ๋กœ ํ’€๋ฉด๋˜๋Š” ๋ฌธ์ œ์˜€๋‹ค.

 

 

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

public class Main {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        ArrayList<Integer> list = new ArrayList<>();
        int n = Integer.parseInt(br.readLine());
        for (int i = 0; i < n; i++) {
            String[] str = br.readLine().split(" ");
            list.add(Integer.parseInt(str[1]));
        }
        int min = list.get(0);
        int max = list.get(0);
        int cnt = 0;
        for (int i = 1; i < list.size(); i++) {
            if (list.get(i)>max) { //์ตœ๊ณ ๋†’์ด๊ฑด๋ฌผ
                max = list.get(i);
                cnt++;
            }else if (list.get(i)==0) { 
                min =0;
                max=0;
            }else if (min==0 && min<list.get(i)) {  //0๋ฐ”๋กœ ๋‹ค์Œ ๊ฑด๋ฌผ
                min=list.get(i);
                max=list.get(i);
            } else if (min==list.get(i)) { //๊ฐ™์€ ๋†’์ด๊ฑด๋ฌผ
                cnt++;
            }
        }
        System.out.println(cnt);


    }

}

 

๐Ÿ”“๋ฌธ์ œํ•ด๊ฒฐ(์ •๋‹ต)  - Stack

์Šคํƒ์€ LIFO ์ด๋ฏ€๋กœ ๋ฐ”๋กœ ์ง์ „๊ฑด๋ฌผ์˜ ๋†’์ด๋ฅผ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

1.์Šคํƒ์ด ๋น„์–ด์žˆ๋‹ค๋ฉด ๊ฐ’์„ ๋ฌด์กฐ๊ฑด ์ €์žฅํ•ด์ค€๋‹ค.

2.์ด์ „ ๊ฐ’๊ณผ ์ž…๋ ฅ๊ฐ’์„ ๋น„๊ตํ•œ๋‹ค.

3. ์ž…๋ ฅํ•œ ๊ฐ’์ด ํฌ๋ฉด ์Šคํƒ์— ๋ฌด์กฐ๊ฑด ์ €์žฅํ•ด์ค€๋‹ค.

4.์ž…๋ ฅํ•œ ๊ฐ’์ด ์ž‘์œผ๋ฉด ์Šคํƒ์—์„œ ๊ฐ’์„ ๊บผ๋‚ด์•ผํ•œ๋‹ค.

   4-1 ์ด์ „์— ์ €์žฅ๋œ ๋ชจ๋“  ๊ฐ’๋“ค๊ณผ ๋น„๊ตํ•˜์—ฌ ์Šคํƒ์ด ๋น„๊ฑฐ๋‚˜ ๊ธฐ์กด๊ฐ’๋ณด๋‹ค ์ž‘์„๋•Œ๊นŒ์ง€ ๋ฌดํ•œ ๋ฐ˜๋ณต์„ ํ•œ๋‹ค.

   4-2  ๊ธฐ์กด๊ฐ’๋ณด๋‹ค ์ž…๋ ฅ๊ฐ’์ด ์ž‘์œผ๋ฉด ๊ฑด๋ฌผ์ˆ˜++,ํ•ด๋‹น๊ฑด๋ฌผ์˜ ๋†’์ด๋ฅผ ์ œ์™ธ์‹œํ‚จ๋‹ค.

5.ํ•ด๋‹น while๋ฌธ์„ ํƒˆ์ถœํ•˜๊ณ  ๋‚˜์„œ๋„ ์ž…๋ ฅํ•œ๊ฐ’์ด ๊ธฐ์กด๊ฐ’๋ณด๋‹ค ํฌ๋ฉด ์ €์žฅํ•ด์ค˜์•ผํ•จ!!

(์ด๋ถ€๋ถ„๋•Œ๋ฌธ์— ์ค‘๊ฐ„๋ถ€๋ถ„์—์„œ ๊ณ„์† ํ‹€๋ ธ์Šต๋‹ˆ๋Œœ..)

 

๋งŒ์•ฝ y๊ฐ€ 0์ด๊ฑฐ๋‚˜ ์ž…๋ ฅํ•œ ๊ฐ’๊ณผ ๋†’์ด๊ฐ€ ๊ฐ™๋‹ค๋ฉด ์ €์žฅํ•˜์ง€์•Š๋Š”๋‹ค.

 

y๊ฐ€ 0์ด๋ผ๋ฉด ๊ทธ ์œ„์น˜์— ๊ฑด๋ฌผ์ด ์—†๋‹ค๋Š”๊ฒƒ์ด๋‹ˆ๊นŒ ์•ž ๋’ค ๊ฑด๋ฌผ์ด ๋”ฐ๋กœ ์กด์žฌํ•จ์„ ์•Œ ์ˆ˜์žˆ๋‹ค.

๊ทธ๋ž˜์„œ y๊ฐ€ 0์ผ๋•Œ ์Šคํƒ์ด ๋น„์–ด์žˆ์ง€์•Š๋‹ค๋ฉด ์ด์ „์— ๊ฑด๋ฌผ์ด ๊ณ„์‚ฐ๋˜์ง€ ์•Š์€๊ฒƒ์ด๊ธฐ๋•Œ๋ฌธ์— ์Šคํƒ์˜ ํฌ๊ธฐ๋ฅผ ๊ฒฐ๊ณผ๊ฐ’์— ์ €์žฅํ•˜๊ณ 

์Šคํƒ์„ ๋น„์›Œ์ค€๋‹ค.

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

/*
* ์ž…๋ ฅ
์ž…๋ ฅ n
x์ขŒํ‘œ y์ขŒํ‘œ
*
* ์ถœ๋ ฅ
๊ฒฝํ—˜์น˜ํ•ฉ์˜ ์ตœ๋Œ“๊ฐ’
* */

public class Main {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        Stack<Integer> stack = new Stack<>();
        int n = Integer.parseInt(br.readLine());
        int cnt =0;
        for (int i = 0; i < n; i++) {
            String[] str = br.readLine().split(" ");
            int y = Integer.parseInt(str[1]);
            if(y==0){ //0์ด๋ผ๋ฉด ,๋‹ค์Œ๊ฐ’์„ ๋ฐ›์Œ
                if(!stack.isEmpty()){
                    cnt+=stack.size(); //๊ธฐ์กด๊ฐ’ ์ €์žฅํ•˜๊ณ  ๋น„์›Œ์คŒ
                    stack.clear();
                    continue;
                }
                continue;
            }
            if (!stack.isEmpty() && stack.peek()>y){ //๊ธฐ์กด๊ฐ’๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™์œผ๋ฉด
                 while(!stack.isEmpty() && stack.peek()>y){ //์Šคํƒ์ด ๋น„๊ฑฐ๋‚˜ ๊ธฐ์กด๊ฐ’๋ณด๋‹ค ์ž‘์„๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณต
                cnt++;
                stack.pop();
                 }
            }
            if(stack.isEmpty() || (!stack.isEmpty() &&stack.peek()<y)){ //์Šคํƒ์ด ๋น„์–ด์žˆ๊ฑฐ๋‚˜ ๊ธฐ์กด๊ฐ’๋ณด๋‹ค ํฌ๋ฉด ์Šคํƒ์— ์ €์žฅ
                stack.push(y);
            }

        }
        if(!stack.isEmpty()){
            cnt+=stack.size();
        }
        System.out.println(cnt);

    }

}

'Algorithm' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[Java]BOJ 2776 : ์•”๊ธฐ์™•  (0) 2025.01.13
[Java]BOJ 1388 : ๋ฐ”๋‹ฅ์žฅ์‹  (0) 2024.12.07
[Java]BOJ 1026 : ๋ณด๋ฌผ  (0) 2024.12.06
[Java]BOJ 16112 : 5์ฐจ ์ „์ง  (0) 2024.12.03
BOJ 11557 : Yangjojang of The Year -JAVA  (1) 2024.12.03
'Algorithm' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [Java]BOJ 1388 : ๋ฐ”๋‹ฅ์žฅ์‹
  • [Java]BOJ 1026 : ๋ณด๋ฌผ
  • [Java]BOJ 16112 : 5์ฐจ ์ „์ง
  • BOJ 11557 : Yangjojang of The Year -JAVA
m.<jj
m.<jj
  • m.<jj
    JJ
    m.<jj
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (24)
      • Study (14)
        • Python (7)
        • Java (4)
        • HTML-CSS (1)
        • error (1)
        • Redis (0)
      • Algorithm (9)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ํƒœ๊ทธ
    • ๋ฐฉ๋ช…๋ก
  • ๋งํฌ

  • ๊ณต์ง€์‚ฌํ•ญ

  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    python
  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.1
m.<jj
BOJ 1863 : ์Šค์นด์ด๋ผ์ธ ์‰ฌ์šด๊ฑฐ
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”