BOJ 13901 :: 로봇
문제 링크 : https://www.acmicpc.net/problem/13901
진짜.. 돌았나 ㅠㅠ 이렇게 쉬운 문제를.. 3번이나 틀리고 맞았다 ㅋㅅㅋ
나의 정답 비율은 아주 팍팍팍 떨어지고 있균^^!
내가 잘못 생각하고 푼 부분
1) 다음 칸으로 이동하였을 때, 무조건 처음 방향에서 다시 시작했다.
2) 다음 칸으로 이동하였을 때, 무조건 현재 방향의 다음 방향에서 시작했다.
( 1), 2) 다음 칸으로 이동하고 방향 그대로 일직선으로 가도록 해야함.)
3) 나누기 수식을.. 괄호를 안하고 해서 잘못된 결과가 나왔다.
(이건 정말 바보같은 짓..)
문제 좀 제대로 보고!!! 코드도 영혼을 담아서 짜란 말이드어아아아.. 오늘 집중이 잘 안되어서 그런것이라고 생각하겠어!^^!
자기 위안....
정신차리자!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
나의 코드
Github : https://github.com/j2wooooo/Daliy_Algorithms/blob/master/Daliy_Algorithms/BOJ_13901/BOJ_13901.cpp
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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 | // 백준알고리즘 13901번 :: 로봇 #include<iostream> #include<queue> using namespace std; int R, C, k; int room[1000][1000]; int visited[1000][1000]; int dir[4]; // 1 : 북, 2 : 남, 3 : 서, 4 : 동 int dx[5] = { 0, -1, 1, 0, 0 }; int dy[5] = { 0, 0, 0, -1, 1 }; void simulate(int x, int y) { int i = 0; int count = 0; int mx = 0; int my = 0; while (1) { if (count == 4) { cout << x << ' ' << y; return; } mx = x + dx[dir[i]]; my = y + dy[dir[i]]; if ((mx < 0 || mx >= R || my < 0 || my >= C) || visited[mx][my] || room[mx][my]) { i = (i+1) % 4; count++; continue; } visited[mx][my] = 1; x = mx; y = my; count = 0; } return; } int main() { int x = 0, y = 0; cin >> R >> C; cin >> k; for (int i = 0; i < k; i++) { cin >> x >> y; room[x][y] = 1; } cin >> x >> y; visited[x][y] = 1; for (int i = 0; i < 4; i++) cin >> dir[i]; simulate(x,y); return 0; } | cs |
'Problem > 시뮬레이션' 카테고리의 다른 글
[SW Expert Academy] 1210. Ladder1 (0) | 2019.02.26 |
---|---|
[C/C++] BOJ 1331 :: 나이트 투어 (0) | 2019.02.08 |
[C/C++] BOJ 1986 :: 체스 (0) | 2019.02.06 |
[C/C++] BOJ 1063 :: 킹 (0) | 2019.01.23 |
[C/C++] BOJ 1347 :: 미로 만들기 (0) | 2019.01.21 |