Algorithm/๋ฐฑ์ค€

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

giraffe_ 2023. 7. 26. 01:09

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

 

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

์ฒซ์งธ ์ค„์— n์ด ์ฃผ์–ด์ง„๋‹ค. (1 ≤ n ≤ 50,000) ๋‹ค์Œ n๊ฐœ์˜ ์ค„์—๋Š” ์™ผ์ชฝ๋ถ€ํ„ฐ ์Šค์นด์ด๋ผ์ธ์„ ๋ณด์•„ ๊ฐˆ ๋•Œ ์Šค์นด์ด๋ผ์ธ์˜ ๊ณ ๋„๊ฐ€ ๋ฐ”๋€Œ๋Š” ์ง€์ ์˜ ์ขŒํ‘œ x์™€ y๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. (1 ≤ x ≤ 1,000,000. 0 ≤ y ≤ 500,000) ์ฒซ

www.acmicpc.net

 

 

 

 

 

 

๋ฌธ์ œ

  • ์Šค์นด์ด๋ผ์ธ์„ ๋ณด๊ณ  ๊ฑด๋ฌผ์ด ์ตœ์†Œ ๋ช‡ ์ฑ„์ธ์ง€ ์•Œ์•„๋‚ด๊ธฐ
  • ๊ณ ๋„๊ฐ€ ๋ฐ”๋€Œ๋Š” ์ง€์ ์˜ ์ขŒํ‘œ x์™€ y๊ฐ€ n๊ฐœ ์ฃผ์–ด์ง„๋‹ค
  • (1 ≤ n ≤ 50,000)
  • (1 ≤ x ≤ 1,000,000. 0 ≤ y ≤ 500,000)

 

 

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

10
1 1
2 2
5 1
6 3
8 1
11 0
15 2
17 3
20 2
22 1

 

๊ฒฐ๊ณผ : 6

 

 

 

 

 

ํ’€์ด

  • ์ƒˆ๋กœ ๋“ค์–ด์˜ค๋Š” ๊ฐ’๊ณผ ์ด์ „์˜ ๊ฐ’๋“ค์„ ๋น„๊ตํ•ด์•ผ ํ•˜๋ฏ€๋กœ ์Šคํƒ์„ ์‚ฌ์šฉํ•ด์„œ ํ‘ผ๋‹ค
    • ์ƒˆ๋กœ ๋“ค์–ด์˜ค๋Š” ๊ณ ๋„๊ฐ€ ์ด์ „์˜ ๊ณ ๋„๋ณด๋‹ค ๋‚ฎ์œผ๋ฉด → ๊ณ„์† pop, ๊ฒฐ๊ณผ๊ฐ’ ์ฆ๊ฐ€
    • ์ด๋ฏธ ์žˆ๋Š” ๊ณ ๋„๋ฉด ์ƒˆ๋กœ ๋„ฃ์„ ํ•„์š” X
    • ์ž‘์—… ์ข…๋ฃŒ ํ›„, ์Šคํƒ์— ๋‚จ์€๊ฑฐ๋งŒํผ ์นด์šดํŠธ

 

 

 

 

 

์ฝ”๋“œ

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

public class BOJ1863 {

	public static void main(String[] args) throws NumberFormatException, IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		int n = Integer.parseInt(br.readLine()); //๊ณ ๋„๊ฐ€ ๋ฐ”๋€Œ๋Š” ์ง€์ ์˜ ์ขŒํ‘œ ๊ฐœ์ˆ˜
		
		Stack<Integer> stack = new Stack<>(); //stack์— y ์ขŒํ‘œ๋ฅผ ์Œ“์•„๋‚˜๊ฐ
		
		int answer = 0; //๋นŒ๋”ฉ ๊ฐœ์ˆ˜
		for(int i = 0; i < n; i++) {
			StringTokenizer st = new StringTokenizer(br.readLine(), " ");
			
			//๊ณ ๋„๊ฐ€ ๋ฐ”๋€Œ๋Š” ์ง€์ ์˜ ์ขŒํ‘œ
			int x = Integer.parseInt(st.nextToken());
			int y = Integer.parseInt(st.nextToken());
			
			//์ƒˆ๋กœ ๋“ค์–ด์˜ค๋Š” ๊ณ ๋„๊ฐ€ ์ด์ „์˜ ๊ณ ๋„๋ณด๋‹ค ๋‚ฎ์œผ๋ฉด, ์ œ๊ฑฐ ๋ฐ ์นด์šดํŠธ
			while(!stack.empty() && y < stack.peek()) { //์—ฐ์†์œผ๋กœ ์ œ๊ฑฐ
				stack.pop();
				answer++;
			}
			
			if(!stack.contains(y)) { //์—†๋Š” ๊ณ ๋„๋ฉด ์Šคํƒ์— ๋„ฃ๊ธฐ
				stack.add(y);
			}
		}
		
		
		//์ข…๋ฃŒ ํ›„ ์Šคํƒ์— ๋‚จ์€๊ฑฐ 0์ด์ƒ์ด๋ฉด ์นด์šดํŠธ
		for(int i : stack) { 
			if(i > 0) answer++;
		}
		
		//์ถœ๋ ฅ
		System.out.println(answer);
	}

}

 

 

 

 

 

๊ฒฐ๊ณผ

 

 

 

 

 

๋ฐฐ์šด์ 

  • ๊ดœํžˆ ๋ณต์žกํ•˜๊ฒŒ ํ’€๋‹ค๊ฐ€ 7%๋Œ€์—์„œ ํ‹€๋ ธ์—ˆ๋‹ค. ์Šคํƒ์€ ๊ฐ„๊ฒฐํ•˜๊ฒŒ ํ’€์–ด์•ผ ํ•œ๋‹ค.