Post

[JAVA]백준 1783번 병든 나이트

[JAVA]백준 1783번 병든 나이트

📌문제 링크


https://www.acmicpc.net/problem/1783

Image

📌문제 설명


처음엔 나이트의 이동을 보고 그래프 탐색을 떠올렸습니다. 하지만 체스판의 크기가 굉장히 크기 때문에 그래프 탐색으로는 해결이 불가능합니다. 대신 나이트의 이동을 보면 제약사항이 굉장히 많습니다. 한번 이동을 할때 얼마나 많이 갈 수 있냐를 출력하는 문제이기에, 각 이동의 조합을 생각해보면 간단한 조건 분기로 문제를 해결할 수 있습니다.s

📌코드


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
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;

public class Main {
    static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    static BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
    static int N, M;

    public static void main(String[] args) throws Exception {
        // 입력을 받아 StringTokenizer로 분리
        StringTokenizer st = new StringTokenizer(br.readLine());
        N = Integer.parseInt(st.nextToken()); // 첫 번째 숫자 N
        M = Integer.parseInt(st.nextToken()); // 두 번째 숫자 M
        br.close();
        // N이 1일 경우
        if (N == 1) {
            bw.write("1\n");
        }
        // N이 2일 경우
        else if (N == 2) {
            bw.write(Math.min(4, (M + 1) / 2) + "\n");
        }
        // N이 3 이상이고 M이 7 미만일 경우
        else if (M < 7) {
            bw.write(Math.min(4, M) + "\n");
        }
        // 그 외의 경우
        else {
            bw.write(M - 2 + "\n");
        }
        bw.flush();
        bw.close();
    }
}
This post is licensed under CC BY 4.0 by the author.