본문 바로가기
Beakjoon&프로그래머스/Java

[백준/Java] 21869번 Maximum Bishop

by 현장 2026. 3. 16.

-Code

import java.io.*;
import java.util.*;

public class BOJ21869 {
    public static void main(String[] args) throws Exception {
        BufferedReader br =
                new BufferedReader(new InputStreamReader(System.in));

        int size = Integer.parseInt(br.readLine());

        if (size == 1) {
            // 1일때는 1개만 존재
            System.out.println(1);
            System.out.println(1 + " " + 1);
        } else {
            // 1이 아닌 경우 2n - 2개 존재
            StringBuilder answer = new StringBuilder();
            // 첫번째 줄을 다 채웠을때 넣을수 있는 갯수는
            // 마지막 줄 양끝을 제외하고 넣을 수 있음
            answer.append(size * 2 - 2).append("\n");
            for (int i = 1; i <= size; i++) {
                answer.append(1 + " " + i).append("\n");
            }
            for (int i = 2; i < size; i++) {
                answer.append(size + " " + i).append("\n");
            }
            System.out.println(answer);

        }
    }
}

처음에는 모든 경우의 수를 다 찾아봐야하나 했지만 틀린 접근이서 풀지 못했습니다.

그래서 힌트를 찾아보니 첫번째 줄을 비숍으로 채우고 나머지 비숍 넣을 수 있는 곳을 찾으라는 것을 보고 n + n - 2라는 공식이 size가 1보다 클 경우 적용이 되었습니다. 또한, 넣는 비숍의 위치가 마지막 줄의 양끝을 빼고 들어갈 수 있으므로 이를 이용해 해결했습니다.