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

[백준/Java] 12021번 보물 찾기

by 현장 2026. 3. 23.

-Code

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

public class BOJ12021 {
    public static void main(String[] args) throws IOException {
        BufferedReader br =
                new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine());

        double x = Double.parseDouble(st.nextToken());
        double y = Double.parseDouble(st.nextToken());
        // 산술 평균과 기하 평균의 문제로 n이 커질수록 
        // 결국 두개의 수가 같아지므로 두개의 곱의 루트가 답
        System.out.println(String.format("%.6f %.6f", Math.sqrt(x * y), Math.sqrt(x * y)));
    }
}

이 문제를 잘못이해해서 찾아보니 보물이 다음 두 가지 조건을 동시에 만족하는 곳에 숨겨져 있다고합니다.

  1. x = (a + b) / 2 (산술평균)
  2. y = ab (기하평균)

즉, 어떤 두 수 a, b가 주어졌을 때, 이 두 수의 산술평균기하평균이 같아지는 지점이 바로 보물이 있는 곳으로 이 식에서 등호가 성립할 조건은 바로 a = b일 때입니다. 따라서, 이 문제는 ab가 계속 변하면서 최종적으로 ab가 같아지는 지점의 값을 출력하라는 의미이기 때문에 2개의 곱의 루트가 각각 같은 수여서 이를 힌트로 해결했습니다.