https://www.acmicpc.net/problem/1863
๋ฌธ์
- ์ค์นด์ด๋ผ์ธ์ ๋ณด๊ณ ๊ฑด๋ฌผ์ด ์ต์ ๋ช ์ฑ์ธ์ง ์์๋ด๊ธฐ
- ๊ณ ๋๊ฐ ๋ฐ๋๋ ์ง์ ์ ์ขํ 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%๋์์ ํ๋ ธ์๋ค. ์คํ์ ๊ฐ๊ฒฐํ๊ฒ ํ์ด์ผ ํ๋ค.
'Algorithm > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฐฑ์ค 13460๋ฒ : ๊ตฌ์ฌ ํ์ถ2 (0) | 2023.08.02 |
---|---|
๋ฐฑ์ค 13459๋ฒ : ๊ตฌ์ฌ ํ์ถ (0) | 2023.08.02 |
๋ฐฑ์ค 23743๋ฒ : ๋ฐฉํ์ถ (0) | 2023.07.26 |
๋ฐฑ์ค 17069๋ฒ - ํ์ดํ ์ฎ๊ธฐ๊ธฐ 2 (0) | 2022.10.05 |
๋ฐฑ์ค 9205๋ฒ - ๋งฅ์ฃผ ๋ง์๋ฉด์ ๊ฑธ์ด๊ฐ๊ธฐ (0) | 2022.10.02 |