250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- SQL
- 알고리즘
- nightroutine
- dfs
- STUDYENGLISH
- 삼성
- 코딩테스트
- 코테 준비
- MySQL
- 알고리즘 문제
- 백준
- 원서
- BFS
- 프로그래머스
- sw expert academy
- 직무면접
- 완전탐색
- the midnight library
- 원서읽자
- englishbook
- 원서읽기
- sw expert
- 코테
- swexpertacademy
- English
- 코테 대비
- D4
- PyQt
- 쉬운 알고리즘 문제
- readingbook
Archives
- Today
- Total
시나브로
3190. 뱀 본문
728x90
#include <iostream>
#include <queue>
using namespace std;
typedef struct y {
int i;
int j;
};
int map[110][110] = { 0 };
int list[110][2];
int head[2] = {1,1};
int tail[2] = {1,1};
int d = 1;
int dx[] = { -1,0,1,0 };
int dy[] = { 0,1,0,-1 };
int main() {
freopen("inp.inp", "r", stdin);
freopen("out.out", "w", stdout);
int n = 0;
cin >> n;
int apple;
cin >> apple;
for (int i = 0; i < apple; i++) {
int a, b;
cin >> a >> b;
map[a][b] = 5;
}
int amount = 0;
cin >> amount;
for (int i = 0; i < amount; i++) {
int a;
char b;
cin >> a;
cin >> b;
list[i][0] = a;
if (b == 'D')
list[i][1] = 1;
else
list[i][1] = -1;
}
int point = 0;
int time = 0;
map[head[0]][head[1]] = 1;
queue<y> qu;
//qu.push({ 1,1 });
while (1) {
if (time == list[point][0]) {
d += list[point++][1];
if (d < 0) {
d = 3;
}
if (d > 3)
d = 0;
}
time++;
head[0] += dx[d];
head[1] += dy[d];
qu.push({ head[0],head[1] });
if (map[head[0]][head[1]] == 1) {
break;
}
if (map[head[0]][head[1]] == 0) {
map[tail[0]][tail[1]] = 0;
y i = qu.front();
qu.pop();
tail[0] = i.i;
tail[1] = i.j;
}
map[head[0]][head[1]] = 1;
if (head[0] < 1 || head[0] > n || head[1] < 1 || head[1] > n)
break;
if (tail[0] < 1 || tail[0] > n || tail[1] < 1 || tail[1] > n)
break;
}
cout << time;
return 0;
}
728x90
'알고리즘 > 백준' 카테고리의 다른 글
15683. 감시 (0) | 2020.10.15 |
---|---|
14890. 경사로 (0) | 2020.10.15 |
14891. 톱니바퀴 (0) | 2020.10.14 |
14888. 연산자 끼워넣기 (0) | 2020.08.27 |
2583. 영역 구하기 (0) | 2020.08.07 |
Comments