본문 바로가기

Problem/시뮬레이션

[C/C++] BOJ 1331 :: 나이트 투어

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-11122 };
int dy[8= { -11-22-22-11 };
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 >= 6continue;
            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