Problem ๐ป
1863. ์ค์นด์ด๋ผ์ธ ์ฌ์ด๊ฑฐ
์ ๋ ฅ์ ๋ค์๊ณผ ๊ฐ์ ์ค์นด์ด๋ผ์ธ์ ๋ํ๋ธ๋ค.
..........................
.....XX.........XXX.......
.XXX.XX.......XXXXXXX.....
XXXXXXXXXX....XXXXXXXXXXXX
๋ค์๊ณผ ๊ฐ์ด ์ฌ์ฏ ๊ฐ์ ๋น๋ฉ์ด ์์ ๋๊ฐ ์ต์ ๊ฐ์์ ๋น๋ฉ์ด ์๋ ์ํฉ์ด๋ค.
..........................
.....22.........333.......
.111.22.......XX333XX.....
X111X22XXX....XX333XXXXXXX
..........................
.....XX.........XXX.......
.XXX.XX.......5555555.....
4444444444....5555555XXXXX
..........................
.....XX.........XXX.......
.XXX.XX.......XXXXXXX.....
XXXXXXXXXX....666666666666
Approach 1 โญ
- ์คํ (00:32:10)
์คํ์ผ๋ก ํธ๋ ๋ฌธ์ ์๋ค.
์ฒ์์ ์คํ์ด๋ผ ์๊ฐ ๋ชปํ๊ณ ์ ๋ ฅ๊ฐ๋ค์ ์ด๋ป๊ฒ ํ์ฉํ ์ง ๊ณ ๋ฏผํด๋ดค๋ค. ์ฒ์์ ์ง์ฌ๊ฐํ ์ขํ๋ฅผ ์ด์ฉํด์ ํ๋ ค๊ณ ํ๋ค. ์๋ฅผ ๋ค์ด 2, 2 ๋ค์ 5, 1์ด ๋์ค๋ฉด {(2, 2), (4, 1)} ์ขํ๋ฅผ ๊ฐ์ง๋ ์ง์ฌ๊ฐํ์ด ํ ๊ฐ ์๋ ๊ฒ์ผ๋ก ๋ณด๋ ์์ผ๋ก ํ๋ ค๊ณ ํ๋๋ฐ ์ด ๋ฐฉ๋ฒ์ ๋์ด๋ฅผ ๊ตฌํ ๋ ์ธ๋ชจ์์์ง ๋ชฐ๋ผ๋ ๊ฐฏ์๋ฅผ ๊ตฌํ๋๊ฑฐ๋ผ ๋ง๋ ์๊ณ ๋ฆฌ์ฆ ๊ฐ์ง ์์๋ค.
๊ทธ๋ฆฌ๊ณ , ๋ ๋ฒ์งธ๋ก๋ ์ง๊ธ์ ์ ๋ ฅ๊ฐ์ด 2, 2๋ฉด ์ด์ ์ ๋ ฅ๊ฐ 1, 1๋ณด๋ค ํฌ๋๊น ๊ณ์ ์งํํ๋ค๊ฐ 5, 1์ด ๋์์ ๋ ์ ์ด๋ ๋์ด 2์ ์ง์ฌ๊ฐํ์ด ํ๋ ์๋ ๊ฒ์ด๋ +1 ํ๋ ์์ผ๋ก ๋ง๋ค๋ ค๊ณ ํ๋ค. ์ด๋, ์คํ์ ์ฌ์ฉํ๋ฉด ์ฝ๊ฒ ํ ์ ์์๋๋ฐ ์คํ์ ์๊ฐํ์ง ๋ชปํด์ ์๊ณ ๋ฆฌ์ฆ ๋ถ๋ฅ๋ฅผ ํ์ธํ๋ค.
์์ ๋ฅผ ํตํด ์คํ์ ์ด๋ป๊ฒ ์ด์ฉํ ์ง ์์๋ณด์.
10
1 1
2 2
5 1
6 3
8 1
11 0
15 2
17 3
20 2
22 1
/**
..........................
.....XX.........XXX.......
.XXX.XX.......XXXXXXX.....
XXXXXXXXXX....XXXXXXXXXXXX
**/
์ผ๋จ ์ ๋ ฅ๊ฐ์ ์ค์นด์ด๋ผ์ธ์ ๊ณ ๋๊ฐ ๋ฐ๋๋ ์์๋๋ก ์ฃผ์ด์ง ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ์ ๋ ฌํ ํ์๋ ์๋ค. ๊ทธ๋ผ ์์๋๋ก ์คํ์ ํ๋ฒ ๋ฃ์ด๋ณด์.
(1, 1)์ ๊ฒฝ์ฐ ์ค์นด์ด๋ผ์ธ์ด ์์๋๋ ์ขํ์ด๊ณ ์์ง ์๋ฌด ์ ๋ณด๋ ์์ผ๋ ์ผ๋จ ์คํ์ ๋ฃ๋๋ค.
(2, 2)์ ๊ฒฝ์ฐ์๋ (1, 1)์ ์ค์นด์ด๋ผ์ธ์ด ๋๋๋ ์ง์ ์ด ์๋๋ฉฐ, ์๋ก์ด ๋น๋ฉ์ด ๋ณด์ด๋ ๊ตฌ๊ฐ์ ์์์ด๋ฏ๋ก ์คํ์ ๊ทธ๋๋ก ๋ฃ๋๋ค.
(5, 1)์ ๊ฒฝ์ฐ ์๊ฐ์ ์ข ํด๋ด์ผ ํ๋ค. ์ผ๋จ (5, 1)์ด ๋ฑ์ฅํ ์๊ฐ ๊ณ ๋๊ฐ ๋ฎ์์ง๋ฏ๋ก ๋์ด๊ฐ 1๋ณด๋ค ํฐ ๋น๋ฉ๋ค์ ๋ชจ๋ ๋น๋ฉ์ ๋์ด ์ ํด์ง๋ค. ํ์ฌ ์์ ๋ ์๋์ง๋ง ์๋ ๊ทธ๋ฆผ์ผ๋ก ํ๋ฒ ๋ณด์.
. . . .
. . x .
. x x .
x x x x
(1, 1)์ด ์ฃผ์ด์ง๊ณ , (2, 2), (3, 3)์ด ์ฐจ๋ก๋๋ก ์ฃผ์ด์ ธ ์คํ์ ๋ด๊ฒจ์์ผ๋ฉด (4, 1)์ ๋ฑ์ฅ์ผ๋ก (2, 2)๋ก ์์ํ ๋น๋ฉ๊ณผ (3, 3)์ผ๋ก ์์ํ ๋น๋ฉ์ ๋์ด ์ ํด์ก๋ค. ์ฆ, ๋น๋ฉ์ ๊ฐฏ์์ ์ถ๊ฐํด์ผํ๋ค. ๊ทธ๋ฌ๋ฏ๋ก ์คํ์์ 1๋ณด๋ค ํฐ ๋น๋ฉ๋ค์ ๋ชจ๋ ์ ๊ฑฐํด์ฃผ๋ฉด (3, 3), (2, 2)๊ฐ ์ฐจ๋ก๋๋ก ๋์ ๋น๋ฉ ๊ฐฏ์๋ 2๊ฐ๊ฐ ๋๋ค.
๋ค์ ํด๋น ์์ ๋ก ๋์์ ์ฌ๊ธฐ์๋ (2, 2)๋ก ์์ํ ๋น๋ฉ์ด ์ ํด์ง๋ค. ๊ทธ๋ฌ๋ฏ๋ก (2, 2)๋ฅผ ๋นผ๊ณ ๋น๋ฉ ๊ฐฏ์(ret++)๋ฅผ ํ๋ ์ฆ๊ฐ์ํจ๋ค.
์ดํ์ ์๊ฐํด๋ณผ ๊ฑฐ๋ฆฌ๊ฐ ๋ ํ๋ ์๋ค. (5, 1)์ ์คํ์ ๋ฃ์ด์ผ ํ ๊น? ์๋๋ฉด ๊ทธ๋ฅ ๋ฒ๋ ค๋ ๋๋ ๊ฒ์ผ๊น? ์ด๋ฅผ ์ํด ๋ฃ๋๋ค์ ๋ฃ์ง ์๋๋ค ๋ ๊ฐ์ง ๊ฒฝ์ฐ๋ฅผ ๋ค ์๊ฐํด๋ณด์.
- ๋ฃ๋๋ค.
- ๋ฃ์ง ์๋๋ค.
๊ฐ๋จํ๊ฒ ์์๋ณด๊ธฐ ์ํด ์์ ๋ ๊ฒฝ์ฐ๋ฅผ ํ๋์ ์ฌ์ง์ผ๋ก ํํํ์๋ค. ๊ทธ๋ฆผ์ ๋ณด๋ฉด ์ ์ ์๋ฏ์ด ๋ฃ์ง ์์ผ๋ฉด ๋ง์ง๋ง (22, 1) ๋น๋ฉ์ ๊ฒฝ์ฐ ์๋ ๋น๋ฉ ์ทจ๊ธ๋์ด ์นด์ดํ ์ ๋ค์ด๊ฐ์ง ์๋๋ค. ์ด๋ฅผ ์ํด ๋ง์ง๋ง์ด 0์ด ์๋ ๊ฒฝ์ฐ๋ผ๋ฉด ์ถ๊ฐ ๋ก์ง์ ์คํํ ์ ์๊ฒ ์ง๋ง ๋ฃ๋ ๊ฒ์ผ๋ก ํด๊ฒฐํ๋ ๊ฒ์ด ๋ ํธํ๋ค.
์์ ๊ณผ์ ์ ์ฝ๋๋ก ํํํ๊ธฐ๋ง ํ๋ฉด ์ ๋ต์ด๋ค!
Solution ๐ก
public class BOJ_1863 {
private static class Point {
int x, y;
public Point(int x, int y) {
this.x = x;
this.y = y;
}
}
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
int ret = 0;
ArrayDeque<Point> skyline = new ArrayDeque<>();
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());
if (skyline.isEmpty()) skyline.push(new Point(x, y));
else {
Point peek = skyline.peek();
if (peek.y < y) skyline.push(new Point(x, y));
else {
int tmp = 0;
while (!skyline.isEmpty() && skyline.peek().y > y) {
Point pop = skyline.pop();
if (pop.y != tmp) {
ret++;
tmp = pop.y;
}
}
if (y != 0) skyline.push(new Point(x, y));
}
}
}
int tmp = 0;
while (!skyline.isEmpty()) {
Point pop = skyline.pop();
if (pop.y != tmp) {
ret++;
tmp = pop.y;
}
}
System.out.println(ret);
}
}
'์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
1800. ์ธํฐ๋ท ์ค์น (0) | 2025.02.05 |
---|---|
14658. ํ๋์์ ๋ณ๋ฅ๋ณ์ด ๋น๋ฐ์น๋ค (0) | 2025.01.29 |
4485. ๋ น์ ์ท ์ ์ ์ ๊ฐ ์ ค๋ค์ง? (0) | 2025.01.19 |
1238. ํํฐ (0) | 2025.01.17 |
ํ๋ก์ด๋ ์์ ์๊ณ ๋ฆฌ์ฆ (0) | 2025.01.17 |