티스토리 뷰
백준 :: BOJ :: 15685 :: 드래곤 커브
출처 : https://www.acmicpc.net/problem/15685
#include <bits/stdc++.h>
using namespace std;
struct dc {
int x, y, d, s;
};
int N, ans, arr[101][101]; dc p;
int dx[] = {1,0,-1,0}, dy[] = {0,-1,0,1};
bool visited[101][101];
vector <dc> v; vector <int> dir;
inline bool check(int x, int y) { return arr[y][x] && arr[y + 1][x] && arr[y][x + 1] && arr[y + 1][x + 1] ? true : false; }
void cal() {
dir.push_back(0); dir.push_back(1);
for (int i = 2; i <= 10; i++) {
int m = pow(2, i - 1);
for (int j = 0; j < m; j++) {
if (j < (m / 2)) dir.push_back(dir[j] + 2);
else dir.push_back(dir[j]);
}
}
}
int main() {
std::ios::sync_with_stdio(false); cin.tie(0);
cin >> N; ans = 0;
while (N--) {
cin >> p.x >> p.y >> p.d >> p.s;
v.push_back({p.x,p.y,p.d,p.s});
}
cal();
for (int i = 0; i < v.size(); i++) {
p = v[i];arr[p.y][p.x] = 1;
for (int j = 0; j < pow(2, p.s); j++) {
p.x += dx[(dir[j] + p.d)%4]; p.y += dy[(dir[j] + p.d)%4];
arr[p.y][p.x] = 1;
}
}
for (int i = 0; i < 101; i++) for (int j = 0; j < 101; j++) if (check(j, i)) ans++;
cout << ans;
return 0;
}
'알고리즘 > BOJ' 카테고리의 다른 글
[BOJ 5373] 큐빙 (2) | 2018.10.25 |
---|---|
[BOJ 15686] 치킨 배달 (0) | 2018.10.08 |
[BOJ 14499] 주사위 굴리기 (0) | 2018.10.04 |
[BOJ 7576] 토마토 (0) | 2018.10.02 |
[BOJ 2178] 미로탐색 (0) | 2018.10.02 |
- Total
- Today
- Yesterday
- SW Expert Academy
- 미세먼지 안녕!
- boj
- 역량 테스트
- DP
- DFS
- 입출력
- 이차원 배열과 연산
- 17837
- 백준
- scanf
- 17142
- 팁
- 게리맨더링 2
- 17140
- 새로운 게임 2
- 17144
- 2018 KAKAO BLIND RECRUITMENT
- 알고리즘
- 시간 복잡도
- 삼성
- hackerrank
- 트렌드
- 연구소 3
- string
- 2018 카카오 블라인드 채용
- 17143
- 17779
- SWEA
- STL
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |