공부하는 블로그

Baekjoon | Q.2231 - 분해합 본문

알고리즘 공부

Baekjoon | Q.2231 - 분해합

치킨닮은닭 2020. 6. 16. 23:28
 

2231번: 분해합

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

www.acmicpc.net

 분해합이 주어지면 그 분해합을 만들 수 있는 생성자를 찾는 문제이다. 분해합이란 어떤 수 N과 N을 이루는 각 자리수의 합을 의미하는데 이 때 N을 생성자라고 한다.

import java.util.Scanner;

public class Main {

  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    int n = sc.nextInt();
    sc.close();

    int m = 0;
    for (int i = 0; i < n; i++) {
      int m1 = i;
      int n1 = i;	// 분해합을 저장할 변수

      while(m1 > 0) {
        n1 += m1 % 10;	// 자릿수를 더하고
        m1 /= 10;	// 다음 자릿수로 이동
      }
      
      if(n1 == n) {
        m = i;
        break;
      }
    }

    System.out.println(m);
  }
}

 for문을 이용하여 1부터 n까지 모든 경우를 확인해보는 브루트 포스 문제이다. 간단하게 해결할 수 있었다.

'알고리즘 공부' 카테고리의 다른 글

Algorithm | Q.7568 - 덩치  (0) 2020.06.16
Algorithm | Brute Force & Backtracking  (0) 2020.06.16
Baekjoon | Q.11047 - 동전 0  (0) 2020.06.16
Baekjoon | Q. 1912 - 연속합  (0) 2020.06.16
Algorithm | Binary Search  (0) 2020.06.12
Comments