λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
μ•Œκ³ λ¦¬μ¦˜

[Java] BOJ 2231 λΆ„ν•΄ν•©

by 🍊귀🍊 2024. 7. 10.

문제 

문제 링크 https://www.acmicpc.net/problem/2231

  • μ–΄λ–€ μžμ—°μˆ˜ M의 뢄해합이 N인 경우, M을 N의 μƒμ„±μžλΌ ν•œλ‹€. 
  • 예λ₯Ό λ“€μ–΄, 245의 뢄해합은 256(=245+2+4+5)이 λœλ‹€. λ”°λΌμ„œ 245λŠ” 256의 μƒμ„±μžκ°€ λœλ‹€. 
  • λ¬Όλ‘ , μ–΄λ–€ μžμ—°μˆ˜μ˜ κ²½μš°μ—λŠ” μƒμ„±μžκ°€ 없을 μˆ˜λ„ μžˆλ‹€.
    • λ°˜λŒ€λ‘œ, μƒμ„±μžκ°€ μ—¬λŸ¬ 개인 μžμ—°μˆ˜λ„ μžˆμ„ 수 μžˆλ‹€.
  • 첫째 쀄에 μžμ—°μˆ˜ N(1 ≤ N ≤ 1,000,000)이 주어진닀.
  • 첫째 쀄에 닡을 좜λ ₯ν•œλ‹€. μƒμ„±μžκ°€ μ—†λŠ” κ²½μš°μ—λŠ” 0을 좜λ ₯ν•œλ‹€.

아이디어

  •  while문을 μ‚¬μš©ν•˜μ—¬ λ‚˜λˆ„λŠ” μˆ˜κ°€ 0이 λ λ•ŒκΉŒμ§€ 10으둜 λ‚˜λˆˆλ‹€
  • 10으둜 λ‚˜λˆŒλ•Œλ§ˆλ‹€ λ‚˜μ˜€λŠ” λ‚˜λ¨Έμ§€κ°€ 각 자리의 숫자이기 λ•Œλ¬Έμ— μ›λž˜ μžμ—°μˆ˜μ— κ·Έ 숫자λ₯Ό λ”ν•΄μ„œ Mκ³Ό λΉ„κ΅ν•˜λ©΄ λœλ‹€κ³  μƒκ°ν–ˆλ‹€. 

κ²ͺ은 μ‹œν–‰μ°©μ˜€

  • μ‰¬μš΄λ¬Έμ œμ΄μ§€λ§Œ μ²˜μŒμ— ν‹€λ ΈλŠ”λ°... λ‚΄κ°€ 문제λ₯Ό μ œλŒ€λ‘œ μ•ˆμ½κ³  μƒμ„±μžκ°€ μ—†λŠ” κ²½μš°μ—λŠ” 0을 좜λ ₯ν•œλ‹€λŠ” 쑰건을 빠트리고 λ§μ•˜λ‹€... μ•žμœΌλ‘œ 문제λ₯Ό 꼼꼼히 읽자..!

λ¬Έμ œλŠ” 꼼꼼히 읽기..!

μ½”λ“œ

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

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

        // μƒμ„±μžλ₯Ό 찾을 μžμ—°μˆ˜
        int N = Integer.parseInt(br.readLine());

        // 0λΆ€ν„° NκΉŒμ§€ 각 μžμ—°μˆ˜μ˜ 뢄해합을 κ΅¬ν•˜μ—¬ Nκ³Ό μΌμΉ˜ν•˜λ©΄ μ’…λ£Œ
        for(int i = 1; i <= N; i++){
            int M = i;
            int result = i;

            while(true){
                // 뢄해합을 ν•˜λŠ” κ³Όμ •
                // μ›λž˜ μˆ˜μ— 각 자리수λ₯Ό λ”ν•˜λŠ” κ³Όμ •
                result = result + (M % 10);

                // 일의 μžλ¦¬λΆ€ν„° λ”ν•˜κΈ° λ•Œλ¬Έμ— λ”ν•˜κ³  λ‚˜μ„œ ν•΄λ‹Ή 자리 수λ₯Ό μ—†μ• μ€Œ
                M = M / 10;

                // λ§Œμ•½ λͺ¨λ“  자리 수λ₯Ό 더해 λ‚˜λˆ„κ³  λ‚œ ν›„μ˜ λͺ«μ΄ 0이라면 μ’…λ£Œ
                if(M == 0){
                    break;
                }
            }

            // 결과값이 Nκ³Ό κ°™λ‹€λ©΄ 반볡문 μ’…λ£Œ
            if(result == N){
                System.out.println(i);
                break;
            }

            // λκΉŒμ§€ λ°˜λ³΅λ¬Έμ„ λŒλ €λ„ μƒμ„±μžκ°€ 없을 λ•Œ 0을 좜λ ₯
            if(i == N){
                System.out.println(0);
            }
        }
    }
}



'μ•Œκ³ λ¦¬μ¦˜' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

[Java] BOJ 2798 λΈ”λž™μž­  (0) 2024.07.10
[Java] BOJ 2292 λ²Œμ§‘  (0) 2024.07.10
[Java] BOJ 1978 μ†Œμˆ˜ μ°ΎκΈ°  (0) 2024.07.09
[Java] BOJ 30802 μ›°μ»΄ν‚€νŠΈ  (0) 2024.07.09
[Java] BOJ 4153 μ§κ°μ‚Όκ°ν˜•  (0) 2024.07.09