본문 바로가기
백준알고리즘

백준알고리즘:p2231 분해합

by socialcomputer 2021. 3. 3.

분류: 브르트 포스

 

문제

 

코드

//백준알고리즘 제출시 클래스 이름은 Main으로 바꿔야 됨 
package bruteForce;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
//부르트포스에 맞게 1부터 n까지 다 해보는 방법
public class p2231 {
	
	public static void main(String args[]) {
		int generator = 0;
		
		try(BufferedReader br = new BufferedReader(new InputStreamReader(System.in));){
		int n = Integer.parseInt(br.readLine());
		for(int i=0; i<n; i++) {
			if(findGenerator(i)==n) {
				generator = i;
				break;
			}
		}
		}catch (Exception e) {e.printStackTrace();}
		
		try(BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));){
			bw.write(generator+"\n");
			bw.flush();
		}catch (Exception e) {e.printStackTrace();}
		
	}
	
	
	public static int findGenerator(int a) { //어떤 수의 분해합을 뱉어냄. ->a가 생성자
			int original = a;
			int sum = 0;
			while(a>0){
				sum += a%10;
				a = a/10;
			}
			return original+sum;
		}
	
}

▶좀 어려웠다... 문제를 어떻게 접근해야 할지 잘 몰라서

생성자의 생성자의 생성자... 를 찾는 건줄 알고 착각함

 

▶런타임 에러로 bufferedReader사용

try cath사용 방법을 살짝 바꿈.

 

public static int findGenerator(int a)

a의 분해합을 리턴함

-> 리턴된 분해합의 생성자는 a

그래서 0부터 n까지 findGenerator()에 넣은 후 n과 같은 수를 찾는 것임!

 


채점결과

 

링크 www.acmicpc.net/problem/2231

 

2231번: 분해합

어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자리수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다. 예를 들어, 245의 분해합은 256(=245+2+4+5)이

www.acmicpc.net

 

댓글