[백준 11947] 이런 반전이 [Java]

2025. 8. 14. 18:26PS 풀이/Baekjoon Online Judge

문제

http://boj.ma/11947

 

11947번: 이런 반전이

 

boj.ma

 


풀이

문제 요약

두 수의 곱이 최대가 되도록 1 ~ N에 대해 “사랑스러운 N”을 적절히 구성해 출력하자.

아이디어

두 수가 4999…, 5000… 일 때 곱이 최대가 된다. 4999… 형태의 수를 “goodNum”이라 하자. N에 대한 goodNum이 N 이하라면, goodNum*(goodNum + 1)이 정답이 된다.

만약 N이 goodNum보다 작다면, “사랑스러운 N”을 구한 후 N과 곱한 값을 출력하면 된다.

            // Solve
            long goodNum = 5 * (long) Math.pow(10, strN.length() - 1) - 1;
            if (N >= goodNum) {
                sb.append(goodNum * (goodNum + 1)).append("\\n");
            } else {
                int origin = N;
                long digit = 1;
                long other = 0;
                while (N > 0) {
                    final long a = N % 10;
                    other += (9 - a) * digit;
                    digit *= 10;
                    N /= 10;
                }
                sb.append(origin * other).append("\\n");
            }

풀이 시간

20분


소스코드

https://github.com/rogi-rogi/problem-solving/blob/main/baekjoon-online-judge/easy/11947.java

 

problem-solving/baekjoon-online-judge/easy/11947.java at main · rogi-rogi/problem-solving

Daily Problem Solving Challenges. Contribute to rogi-rogi/problem-solving development by creating an account on GitHub.

github.com