-
반응형
1063번: 킹
8*8크기의 체스판에 왕이 하나 있다. 킹의 현재 위치가 주어진다. 체스판에서 말의 위치는 다음과 같이 주어진다. 알파벳 하나와 숫자 하나로 이루어져 있는데, 알파벳은 열을 상징하고, 숫자는
www.acmicpc.net
주어진 조건들을 하나하나 차근차근 따져가며 조건문을 통해 move함수를 만들었습니다.
#include<iostream> #include<cstdio> #include<string> using namespace std; int arr[8][8] = { 0 }; int ki, kj; int si, sj; void move(string str) { if (str == "R") { if (kj + 1 >= 8) { return; } if (ki == si && kj + 1 == sj) { if (sj + 1 >= 8) { return; } else { sj++; } } kj++; } else if (str == "L") { if (kj - 1 < 0) { return; } if (ki == si && kj - 1 == sj) { if (sj - 1 < 0) { return; } else { sj--; } } kj--; } else if (str == "T") { if (ki - 1 < 0) { return; } if (kj == sj && ki - 1 == si) { if (si - 1 < 0) { return; } else { si--; } } ki--; } else if (str == "B") { if (ki + 1 >= 8) { return; } if (kj == sj && ki + 1 == si) { if (si + 1 >= 8) { return; } else { si++; } } ki++; } else if (str == "RT") { if (ki - 1 < 0 || kj + 1 >= 8) { return; } if (kj + 1 == sj && ki - 1 == si) { if (sj + 1 >= 8 || si - 1 < 0) { return; } else { sj++; si--; } } ki--; kj++; } else if (str == "LT") { if (ki - 1 < 0 || kj - 1 < 0) { return; } if (ki - 1 == si && kj - 1 == sj) { if (sj - 1 < 0 || si - 1 < 0) { return; } else { si--; sj--; } } ki--; kj--; } else if (str == "RB") { if (ki + 1 >= 8 || kj + 1 >= 8) { return; } if (ki + 1 == si && kj + 1 == sj) { if (si + 1 >= 8 || sj + 1 >= 8) { return; } else { si++; sj++; } } ki++; kj++; } else { if (ki + 1 >= 8 || kj - 1 < 0) { return; } if (ki + 1 == si && kj - 1 == sj) { if (si + 1 >= 8 || sj - 1 < 0) { return; } else { si++; sj--; } } ki++; kj--; } } int main() { string king, stone; int n; cin >> king >> stone>>n; //KING = 1 , STONE = 2 ki = 8 - (king.at(1) - '0'); kj = king.at(0) - 'A'; arr[ki][kj] = 1; si = 8 - (stone.at(1) - '0'); sj = stone.at(0) - 'A'; arr[si][sj] = 2; for (int i = 0; i < n; i++) { string op; cin >> op; move(op); } cout << (char)('A'+kj) << 8 - ki << "\n" << (char)('A'+sj) << 8 - si << "\n"; }
반응형'문제풀이 > 백준oj' 카테고리의 다른 글
[백준oj] 1500번 최대 곱 (0) 2020.11.19 [백준oj] 1145번 적어도 대부분의 배수 (0) 2020.11.12 [백준oj] 1010번 다리놓기 (0) 2020.11.11 [백준oj] 2420번 사파리월드 (0) 2020.11.05 [백준oj] 1297번 TV 크기 (0) 2020.11.05 댓글