본문 바로가기
Algorithm/Baekjoon

[백준 알고리즘][자바] 2231번 : 분해합

by hyunipad 2022. 1. 9.
반응형

https://st-lab.tistory.com/98

 

[백준] 2231번 : 분해합 - JAVA [자바]

www.acmicpc.net/problem/2231 2231번: 분해합 문제 어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자리수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다

st-lab.tistory.com

분해합이란 자연수 N과 N을 이루는 각 자리수의 합을 의미합니다.

예를들어, 216의 분해합은 216 + 2 + 1 + 6 = 225입니다.

이때 어떤 자연수 M(216)의 분해합이 N(225) 인 경우, M(216)을 N(225)의 생성자라고 합니다.

 

이때 첫째 줄에 자연수 N이 주어졌을 때 생성자를 출력합니다.

 

자연수 N의 생성자는 자기자신에 각 자리수의 합을 의미하기 때문에 N까지만 반복하여 모든 경우의 수를 검사합니다.

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

public class Main {

	public static void main(String[] args) throws NumberFormatException, IOException {
		
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
		
		int N = Integer.parseInt(br.readLine());
		int M = 0;
		
		for(int i = 1 ; i <= N ; i++) {
			
			int number = i;
			int temp = 0;
			
			while(number != 0) {
				temp += number % 10;
				number /= 10;
			}

			if(temp + i == N) {
				M = i;
				break;
			}
		}

		bw.write(String.valueOf(M));

		br.close();
		bw.flush();
		bw.close();
	}
}

  

반응형

댓글