Muscardinus
뱀 본문
728x90
https://www.acmicpc.net/problem/3190
#include <iostream>
using namespace std;
int map[101][101];
int snake_y[10101], snake_x[10101];
char cmd[10001];
int head_x, head_y,tail_index;
int dx[] = { 1,0,-1,0 };
int dy[] = { 0,1,0,-1 };
int main() {
ios_base::sync_with_stdio(false);
int n, k, l;
cin >> n >> k;
for (int i = 0; i < k; i++) {
int a, b;
cin >> a >> b;
map[a][b] = 1;
}
cin >> l;
for (int i = 0; i < l; i++) {
int a;
char b;
cin >> a >> b;
cmd[a] = b;
}
int time = 0;
int dir = 0;
head_x = 1, head_y = 1,tail_index=time; //꼬리는 머리가 지나온 길을 따라감
snake_x[time] = head_x;snake_y[time] = head_y;
map[head_y][head_x] = -1; //꼬리가 될 수 있는 부분
while (1) {
++time;
head_x += dx[dir];
head_y += dy[dir];
if (head_x<1 || head_x>n || head_y<1 || head_y>n || map[head_y][head_x] == -1) break;
snake_x[time] = head_x;
snake_y[time] = head_y;
if (map[head_y][head_x] == 0) { //사과 없을때
int tail_x = snake_x[tail_index];
int tail_y = snake_y[tail_index];
map[tail_y][tail_x] = 0;
++tail_index;
}
map[head_y][head_x] = -1;
if (cmd[time] == 'D') dir = (dir + 1) % 4;//방향 전환
if (cmd[time] == 'L') dir = (dir + 3) % 4;
}
cout << time << "\n";
return 0;
}
728x90
'알고리즘 문제 > [삼성 SW 역량 테스트 기출 문제]' 카테고리의 다른 글
주사위 굴리기 (0) | 2020.08.21 |
---|---|
시험 감독 (0) | 2020.08.20 |
2048(Easy) (0) | 2020.08.18 |
구술탈출 2 (0) | 2020.08.17 |
퇴사 (0) | 2020.08.16 |
Comments