[백준, BOJ 20444] 색종이와 가위 (java)
Problem Solving/BOJ

[백준, BOJ 20444] 색종이와 가위 (java)

728x90

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

 

20444번: 색종이와 가위

첫 줄에 정수 n, k가 주어진다. (1 ≤ n ≤ 231-1, 1 ≤ k ≤ 263-1)

www.acmicpc.net


메모리: 14,188 KB , 시간: 124 ms

사용 알고리즘: 이분 탐색, 수학

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {

    public static void main(String[] args) throws Exception{

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        StringTokenizer st = new StringTokenizer(br.readLine());
        long n = Long.parseLong(st.nextToken());
        long k = Long.parseLong(st.nextToken());

        // (m + 1) * (n - m + 1) = k라면 성립
        // 이분 탐색으로 m을 찾는다
        String result = "NO";
        long s = 0, e = n / 2 + 1, m, tmp;
        while(s <= e) {
            m = (s + e) / 2;

            tmp = (m + 1) * (n - m + 1);
            if(tmp == k) {
                result = "YES";
                break;
            }
            else if (tmp > k) {
                e = m - 1;
            }
            else s = m + 1;
        }

        // 출력
        System.out.println(result);
    }
}
728x90