<C/C++> BOJ 15685: ๋๋๊ณค ์ปค๋ธ
Coding Test
2022. 4. 5. 09:36
https://www.acmicpc.net/problem/15685
15685๋ฒ: ๋๋๊ณค ์ปค๋ธ
์ฒซ์งธ ์ค์ ๋๋๊ณค ์ปค๋ธ์ ๊ฐ์ N(1 ≤ N ≤ 20)์ด ์ฃผ์ด์ง๋ค. ๋์งธ ์ค๋ถํฐ N๊ฐ์ ์ค์๋ ๋๋๊ณค ์ปค๋ธ์ ์ ๋ณด๊ฐ ์ฃผ์ด์ง๋ค. ๋๋๊ณค ์ปค๋ธ์ ์ ๋ณด๋ ๋ค ์ ์ x, y, d, g๋ก ์ด๋ฃจ์ด์ ธ ์๋ค. x์ y๋ ๋๋๊ณค ์ปค
www.acmicpc.net
#include <iostream>
#include <cstring>
#include <vector>
using namespace std;
#define MAXN 100
#define MAXNN 20
int N;
int G, D, nr, nc;
int map[MAXN + 5][MAXN + 5];
vector<int> point;
static int dr[] = { 0, -1, 0, 1 };
static int dc[] = { 1, 0, -1, 0 };
void recur(int cnt, int dir) {
if (cnt >= G) return;
int SIZE = (int)point.size();
for (int i = SIZE - 1; i >= 0; i--) {
int dir = (point[i] + 1) % 4;
nr += dr[dir];
nc += dc[dir];
map[nr][nc] = 1;
point.push_back(dir);
}
recur(cnt + 1, dir);
}
void InputData(void) {
int r, c;
cin >> N;
memset(map, 0, sizeof(map));
for (int i = 0; i < N; i++) {
cin >> c >> r >> D >> G; // ์์์ , ์์๋ฐฉํฅ, ์ธ๋
nr = r + dr[D]; nc = c + dc[D];
point.clear();
map[r][c] = 1;
map[nr][nc] = 1;
point.push_back(D);
recur(0, D); // ์ธ๋, ๊ธฐ์ค์
}
}
int Count(void) {
int cnt = 0;
for (int i = 0; i <= 100; i++) {
for (int j = 0; j <= 100; j++) {
if (map[i][j] && map[i + 1][j] && map[i][j + 1] && map[i + 1][j + 1]) cnt++;
}
}
return cnt;
}
int main(void) {
ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
InputData();
int ans = Count();
cout << ans << endl;
return 0;
}
90๋ ํ์ ํ๋ ๋ถ๋ถ์์ ์ง์ ๋ง๋ค ๋ฐ๊ฟ์ค๋ค๋ ์๊ฐ์ ์ ๋จน์์
ํ์ง๋ง dr. dc๋ฅผ ์ด์ฉํด์ ํด๊ฒฐํ ์ ์์์
๋ฐฉํฅ ๋ฐ๊ฟ์ฃผ๋ ๊ฑฐ ์ฃผ์!
'Coding Test' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
<C/C++> BOJ 14501: ํด์ฌ (0) | 2022.05.03 |
---|---|
<C/C++> BOJ 3190: ๋ฑ (0) | 2022.05.02 |
<C/C++> BOJ 15684: ์ฌ๋ค๋ฆฌ ์กฐ์ (0) | 2022.04.05 |
<C/C++> BOJ 14888: ์ฐ์ฐ์ ๋ผ์๋ฃ๊ธฐ (0) | 2022.04.02 |
<C/C++> BOJ 14503 ๋ก๋ด์ฒญ์๊ธฐ (0) | 2022.04.02 |