티스토리 뷰

백준 :: 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
링크
«   2025/01   »
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
글 보관함