BOJ 1331 :: 나이트 투어
문제 링크 : https://www.acmicpc.net/problem/1331
어김없이 어이없는 실수를...
1. 수식에 괄호를 쓰지 않음
int srow = 5 - (str[1] - '1');
이 부분을 괄호 없이 진행하였더니 원하지 않는 값이 나왔다.
2. flag라고 써야하는데 true라고 썼다.. 이건 진짜.....
if(flag) cout << "Valid";
하필 이건 마지막 flag에서만 실수를 해서 처음으로 되돌아가는 지에 대한 예제를 돌려보지 않았기 때문에 바로 잡아내지 못했다ㅠㅠ
나의 코드
Github : https://github.com/j2wooooo/Daliy_Algorithms/blob/master/Daliy_Algorithms/BOJ_1331/BOJ_1331.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 | // 백준알고리즘 1331번 :: 나이트 투어 #include<iostream> #include<string> using namespace std; bool flag; int dx[8] = { -2, -2, -1, -1, 1, 1, 2, 2 }; int dy[8] = { -1, 1, -2, 2, -2, 2, -1, 1 }; int visited[6][6]; int main() { string str; cin >> str; int srow = 5 - (str[1] - '1'); int scol = str[0] - 'A'; int prow = srow; int pcol = scol; visited[prow][pcol] = 1; for (int i = 0; i < 35; i++) { cin >> str; int row = 5 - (str[1] - '1'); int col = str[0] - 'A'; flag = false; for (int j = 0; j < 8; j++) { int mx = prow + dx[j]; int my = pcol + dy[j]; if (mx < 0 || mx >= 6 || my < 0 || my >= 6) continue; if (mx == row && my == col && visited[mx][my] == 0) { visited[row][col] = 1; flag = true; break; } } if (flag) { prow = row; pcol = col; } // 나이트가 방문할 수 없는 지점일 때 else { cout << "Invalid"; return 0; } } // 나이트가 처음 지점으로 돌아올 수 있는지 확인 flag = false; for (int j = 0; j < 8; j++) { if (prow + dx[j] == srow && pcol + dy[j] == scol) { flag = true; break; } } if(flag) cout << "Valid"; else cout << "Invalid"; return 0; } | cs |
'Problem > 시뮬레이션' 카테고리의 다른 글
[C/C++] BOJ 16235 :: 나무 재테크 (0) | 2019.03.04 |
---|---|
[SW Expert Academy] 1210. Ladder1 (0) | 2019.02.26 |
[C/C++] BOJ 13901 :: 로봇 (0) | 2019.02.07 |
[C/C++] BOJ 1986 :: 체스 (0) | 2019.02.06 |
[C/C++] BOJ 1063 :: 킹 (0) | 2019.01.23 |