Skip to content

Commit 5fc6ea3

Browse files
committed
[Gold IV] Title: Puyo Puyo, Time: 0 ms, Memory: 2024 KB -BaekjoonHub
1 parent 0bb55d0 commit 5fc6ea3

2 files changed

Lines changed: 169 additions & 0 deletions

File tree

Lines changed: 121 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,121 @@
1+
#include <iostream>
2+
#include <vector>
3+
#include <queue>
4+
#include <cstring>
5+
6+
using namespace std;
7+
8+
#define ROW 12
9+
#define COL 6
10+
11+
char maps[ROW][COL];
12+
bool visited[ROW][COL];
13+
14+
int dx[] = {0, 0, 1, -1};
15+
int dy[] = {1, -1, 0, 0};
16+
17+
bool flag = false;
18+
int answer = 0;
19+
int temp_cnt = 0;
20+
21+
queue<pair<int, int>> q;
22+
vector<pair<int, int>> puyo_temp, puyo_vec;
23+
24+
void input() {
25+
for (int i = 0; i < ROW; i++) {
26+
for (int j = 0; j < COL; j++) {
27+
cin >> maps[i][j];
28+
}
29+
}
30+
}
31+
32+
void bfs() {
33+
while (!q.empty()) {
34+
int x = q.front().first;
35+
int y = q.front().second;
36+
q.pop();
37+
visited[x][y] = true;
38+
puyo_temp.push_back(make_pair(x, y));
39+
40+
for (int i = 0; i < 4; i++) {
41+
int nx = x + dx[i];
42+
int ny = y + dy[i];
43+
44+
if (nx < 0 || ny < 0 || nx >= ROW || ny >= COL) continue;
45+
if (maps[nx][ny] == '.') continue;
46+
if (visited[nx][ny] == true) continue;
47+
if (maps[nx][ny] != maps[x][y]) continue;
48+
49+
temp_cnt += 1;
50+
visited[nx][ny] = true;
51+
q.push(make_pair(nx, ny));
52+
}
53+
}
54+
}
55+
56+
void update() {
57+
for (int i = 0; i < puyo_vec.size(); i++) {
58+
int x = puyo_vec[i].first;
59+
int y = puyo_vec[i].second;
60+
61+
maps[x][y] = '.';
62+
}
63+
}
64+
65+
void down() {
66+
for (int i = ROW - 1; i >= 0; i--) {
67+
for (int j = COL - 1; j >= 0; j--) {
68+
if (maps[i][j] == '.') continue;
69+
int temp = i;
70+
71+
while (1) {
72+
// temp๊ฐ€ ๋๊นŒ์ง€ ๋‚ด๋ ค์™”๊ฑฐ๋‚˜, ๋‹ค์Œ ์นธ์— Puyo๊ฐ€ ์žˆ๊ฑฐ๋‚˜
73+
if (temp == ROW - 1 || maps[temp + 1][j] != '.') break;
74+
75+
maps[temp + 1][j] = maps[temp][j];
76+
maps[temp][j] = '.';
77+
temp++;
78+
}
79+
}
80+
}
81+
}
82+
83+
int main() {
84+
input();
85+
86+
while (1) {
87+
flag = false;
88+
memset(visited, false, sizeof(visited));
89+
puyo_vec.clear();
90+
91+
for (int i = 0; i < ROW; i++) {
92+
for (int j = 0; j < COL; j++) {
93+
// '.' ์ด๊ฑฐ๋‚˜ ๋ฐฉ๋ฌธํ•œ ๊ณณ์€ ์Šคํ‚ต
94+
if (maps[i][j] == '.' || visited[i][j]) continue;
95+
96+
temp_cnt = 1;
97+
q.push(make_pair(i, j));
98+
bfs();
99+
100+
if (temp_cnt >= 4) {
101+
flag = true; // ํŽ‘!
102+
103+
// ์ขŒํ‘œ ์˜ฎ๊ธฐ๊ธฐ: puyo_temp => puyo_vec
104+
for (int k = 0; k < puyo_temp.size(); k++) {
105+
puyo_vec.push_back(puyo_temp[k]);
106+
}
107+
}
108+
puyo_temp.clear();
109+
}
110+
}
111+
update(); // ํ„ฐ์ง„ ๋ฟŒ์š” ์—†์• ๊ธฐ
112+
down(); // ๊ณต๊ฐ„ ์•„๋ž˜๋กœ ๋‚ด๋ฆฌ๊ธฐ
113+
114+
if (flag == true) answer++;
115+
else break;
116+
}
117+
118+
cout << answer;
119+
120+
return 0;
121+
}
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
# [Gold IV] Puyo Puyo - 11559
2+
3+
[๋ฌธ์ œ ๋งํฌ](https://www.acmicpc.net/problem/11559)
4+
5+
### ์„ฑ๋Šฅ ์š”์•ฝ
6+
7+
๋ฉ”๋ชจ๋ฆฌ: 2024 KB, ์‹œ๊ฐ„: 0 ms
8+
9+
### ๋ถ„๋ฅ˜
10+
11+
๊ตฌํ˜„, ๊ทธ๋ž˜ํ”„ ์ด๋ก , ๊ทธ๋ž˜ํ”„ ํƒ์ƒ‰, ์‹œ๋ฎฌ๋ ˆ์ด์…˜, ๋„ˆ๋น„ ์šฐ์„  ํƒ์ƒ‰
12+
13+
### ์ œ์ถœ ์ผ์ž
14+
15+
2025๋…„ 9์›” 30์ผ 19:22:00
16+
17+
### ๋ฌธ์ œ ์„ค๋ช…
18+
19+
<p>๋ฟŒ์š”๋ฟŒ์š”์˜ ๋ฃฐ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.</p>
20+
21+
<blockquote>
22+
<p>ํ•„๋“œ์— ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์ƒ‰๊น”์˜ ๋ฟŒ์š”๋ฅผ ๋†“๋Š”๋‹ค. ๋ฟŒ์š”๋Š” ์ค‘๋ ฅ์˜ ์˜ํ–ฅ์„ ๋ฐ›์•„ ์•„๋ž˜์— ๋ฐ”๋‹ฅ์ด๋‚˜ ๋‹ค๋ฅธ ๋ฟŒ์š”๊ฐ€ ๋‚˜์˜ฌ ๋•Œ๊นŒ์ง€ ์•„๋ž˜๋กœ ๋–จ์–ด์ง„๋‹ค.</p>
23+
24+
<p>๋ฟŒ์š”๋ฅผ ๋†“๊ณ  ๋‚œ ํ›„, ๊ฐ™์€ ์ƒ‰ ๋ฟŒ์š”๊ฐ€ 4๊ฐœ ์ด์ƒ ์ƒํ•˜์ขŒ์šฐ๋กœ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์œผ๋ฉด ์—ฐ๊ฒฐ๋œ ๊ฐ™์€ ์ƒ‰ ๋ฟŒ์š”๋“ค์ด ํ•œ๊บผ๋ฒˆ์— ์—†์–ด์ง„๋‹ค. ์ด๋•Œ 1์—ฐ์‡„๊ฐ€ ์‹œ์ž‘๋œ๋‹ค.</p>
25+
26+
<p>๋ฟŒ์š”๋“ค์ด ์—†์–ด์ง€๊ณ  ๋‚˜์„œ ์œ„์— ๋‹ค๋ฅธ ๋ฟŒ์š”๋“ค์ด ์žˆ๋‹ค๋ฉด, ์—ญ์‹œ ์ค‘๋ ฅ์˜ ์˜ํ–ฅ์„ ๋ฐ›์•„ ์ฐจ๋ก€๋Œ€๋กœ ์•„๋ž˜๋กœ ๋–จ์–ด์ง€๊ฒŒ ๋œ๋‹ค.</p>
27+
28+
<p>์•„๋ž˜๋กœ ๋–จ์–ด์ง€๊ณ  ๋‚˜์„œ ๋‹ค์‹œ ๊ฐ™์€ ์ƒ‰์˜ ๋ฟŒ์š”๋“ค์ด 4๊ฐœ ์ด์ƒ ๋ชจ์ด๊ฒŒ ๋˜๋ฉด ๋˜ ํ„ฐ์ง€๊ฒŒ ๋˜๋Š”๋ฐ, ํ„ฐ์ง„ ํ›„ ๋ฟŒ์š”๋“ค์ด ๋‚ด๋ ค์˜ค๊ณ  ๋‹ค์‹œ ํ„ฐ์ง์„ ๋ฐ˜๋ณตํ•  ๋•Œ๋งˆ๋‹ค 1์—ฐ์‡„์”ฉ ๋Š˜์–ด๋‚œ๋‹ค.</p>
29+
30+
<p>ํ„ฐ์งˆ ์ˆ˜ ์žˆ๋Š” ๋ฟŒ์š”๊ฐ€ ์—ฌ๋Ÿฌ ๊ทธ๋ฃน์ด ์žˆ๋‹ค๋ฉด ๋™์‹œ์— ํ„ฐ์ ธ์•ผ ํ•˜๊ณ  ์—ฌ๋Ÿฌ ๊ทธ๋ฃน์ด ํ„ฐ์ง€๋”๋ผ๋„ ํ•œ๋ฒˆ์˜ ์—ฐ์‡„๊ฐ€ ์ถ”๊ฐ€๋œ๋‹ค.</p>
31+
</blockquote>
32+
33+
<p>๋‚จ๊ทœ๋Š” ์ตœ๊ทผ ๋ฟŒ์š”๋ฟŒ์š” ๊ฒŒ์ž„์— ํ‘น ๋น ์กŒ๋‹ค. ์ด ๊ฒŒ์ž„์€ 1:1๋กœ ๋ถ™๋Š” ๋Œ€์ „๊ฒŒ์ž„์ด๋ผ ์ž˜ ์Œ“๋Š” ๊ฒƒ๋„ ์ค‘์š”ํ•˜์ง€๋งŒ, ์ƒ๋Œ€๋ฐฉ์ด ํ„ฐ๋œจ๋ฆฐ๋‹ค๋ฉด ์—ฐ์‡„๊ฐ€ ๋ช‡ ๋ฒˆ์ด ๋ ์ง€ ๋ฐ”๋กœ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๋Š” ๋Šฅ๋ ฅ๋„ ํ•„์š”ํ•˜๋‹ค. ํ•˜์ง€๋งŒ ์•„์ง ์‹ค๋ ฅ์ด ๋ถ€์กฑํ•˜์—ฌ ๋‚จ๊ทœ๋Š” ์ž๊ธฐ ํ•„๋“œ์—๋งŒ ์‹ ๊ฒฝ ์“ฐ๊ธฐ ๋ฐ”์˜๋‹ค. ์ƒ๋Œ€๋ฐฉ์˜ ํ•„๋“œ๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ์—ฐ์‡„๊ฐ€ ๋ช‡ ๋ฒˆ ์—ฐ์†์œผ๋กœ ์ผ์–ด๋‚ ์ง€ ๊ณ„์‚ฐํ•˜์—ฌ ๋‚จ๊ทœ๋ฅผ ๋„์™€์ฃผ์ž!</p>
34+
35+
### ์ž…๋ ฅ
36+
37+
<p>์ด 12๊ฐœ์˜ ์ค„์— ํ•„๋“œ์˜ ์ •๋ณด๊ฐ€ ์ฃผ์–ด์ง€๋ฉฐ, ๊ฐ ์ค„์—๋Š” 6๊ฐœ์˜ ๋ฌธ์ž๊ฐ€ ์žˆ๋‹ค.</p>
38+
39+
<p>์ด๋•Œ <code>.</code>์€ ๋นˆ๊ณต๊ฐ„์ด๊ณ  <code>.</code>์ด ์•„๋‹Œ๊ฒƒ์€ ๊ฐ๊ฐ์˜ ์ƒ‰๊น”์˜ ๋ฟŒ์š”๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค.</p>
40+
41+
<p><code>R</code>์€ ๋นจ๊ฐ•, <code>G</code>๋Š” ์ดˆ๋ก, <code>B</code>๋Š” ํŒŒ๋ž‘, <code>P</code>๋Š” ๋ณด๋ผ, <code>Y</code>๋Š” ๋…ธ๋ž‘์ด๋‹ค.</p>
42+
43+
<p>์ž…๋ ฅ์œผ๋กœ ์ฃผ์–ด์ง€๋Š” ํ•„๋“œ๋Š” ๋ฟŒ์š”๋“ค์ด ์ „๋ถ€ ์•„๋ž˜๋กœ ๋–จ์–ด์ง„ ๋’ค์˜ ์ƒํƒœ์ด๋‹ค. ์ฆ‰, ๋ฟŒ์š” ์•„๋ž˜์— ๋นˆ ์นธ์ด ์žˆ๋Š” ๊ฒฝ์šฐ๋Š” ์—†๋‹ค.</p>
44+
45+
### ์ถœ๋ ฅ
46+
47+
<p>ํ˜„์žฌ ์ฃผ์–ด์ง„ ์ƒํ™ฉ์—์„œ ๋ช‡์—ฐ์‡„๊ฐ€ ๋˜๋Š”์ง€ ์ถœ๋ ฅํ•œ๋‹ค. ํ•˜๋‚˜๋„ ํ„ฐ์ง€์ง€ ์•Š๋Š”๋‹ค๋ฉด 0์„ ์ถœ๋ ฅํ•œ๋‹ค.</p>
48+

0 commit comments

Comments
ย (0)