728x90
반응형
https://www.acmicpc.net/problem/15685
#include <bits/stdc++.h>
#define MAX 101
using namespace std;
int n, x, y, d, g;
int MAP[MAX][MAX];
int dx[] = {0, -1, 0, 1}; // 오른쪽, 위, 왼쪽, 아래
int dy[] = {1, 0, -1, 0};
vector<int> Dir_Info;
void Make_Dragon_curve(){
int s = Dir_Info.size();
for(int i=s-1; i>=0; i--){
int nd = (Dir_Info[i]+1)%4;
x += dx[nd];
y += dy[nd];
MAP[x][y] = 1;
Dir_Info.push_back(nd);
}
}
// 칸 세기
void Count_Square(){
int cnt = 0;
for(int i=0; i<MAX; i++){
for(int j=0; j<MAX; j++){
if(MAP[i][j]==1 && MAP[i+1][j]==1 && MAP[i][j+1]==1 && MAP[i+1][j+1]==1)
cnt++;
}
}
cout << cnt;
}
void solution(){
cin >> n;
for(int i=0; i<n; i++){
cin >> y >> x >> d >> g;
Dir_Info.clear();
MAP[x][y] = 1; // 현재위치 표시
x += dx[d];
y += dy[d];
MAP[x][y] = 1; // 이동한 위치 표시
Dir_Info.push_back(d); // 방향 넣기
for(int j=0; j<g; j++){
Make_Dragon_curve();
}
}
Count_Square();
}
int main(){
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
solution();
return 0;
}
참고
728x90
반응형
'알고리즘 > 시뮬레이션 & 구현' 카테고리의 다른 글
[백준/구현/백트래킹/C++] 17406번 배열 돌리기 4 (삼성 코딩테스트) (0) | 2023.02.08 |
---|---|
[백준/구현/C++] 17281번 야구* (0) | 2023.02.07 |
[백준/구현/C++] 14499번 주사위 굴리기 (삼성 SW 역량 테스트 기출) (0) | 2023.01.23 |
[백준/구현/C++] 21610번 마법사 상어와 비바라기 (삼성 SW 역량 테스트 기출) (0) | 2023.01.22 |
[백준/구현/C++] 21608번 상어 초등학교 (삼성 SW 역량 테스트 기출) * (0) | 2023.01.21 |