https://www.acmicpc.net/problem/1783
1783번: 병든 나이트
첫째 줄에 체스판의 세로 길이 N와 가로 길이 M이 주어진다. N과 M은 2,000,000,000보다 작거나 같은 자연수이다.
www.acmicpc.net
문제 풀이
맨 처음에는 이동하려는 4가지 경우에 대한 함수를 작성해서 문제를 풀어보려 했으나 계속 틀렸다.
이 문제의 핵심은 나이트가 오른쪽으로만 이동한다는 것이다.
만약 N == 1이라면 나이트는 움직일 수 없으므로 1을 출력하고
N == 2라면 2, 3의 방법만을 이용하고 최대 4회를 넘으면 안된다.
N이 3보다 큰 경우에는 세로에는 영향을 안받고 가로의 길이에 맞춰서 코드를 작성했다
소스 코드
#include <iostream>
using namespace std;
int main() {
int N, M;
cin >> N >> M;
if (N == 1)
cout << "1" << '\n';
else if (N == 2) {
cout << min(4, (M + 1) / 2) << endl;
}
else {
if (M <= 6)
cout << min(4, M) << endl;
else
cout << M - 2 << endl;
}
}
'알고리즘' 카테고리의 다른 글
[백준] 1946번 신입 사원 C++ 문제풀이 (1) | 2023.08.21 |
---|---|
[백준] 16953번 A -> B C++ 문제풀이 (0) | 2023.08.20 |
[백준] 4796번 캠핑 C++ 문제풀이 (0) | 2023.08.17 |
[백준] 1439번 뒤집기 C++ 문제풀이 (1) | 2023.08.16 |
[백준] 18870번 좌표압축 C++ 문제풀이 (0) | 2023.08.14 |