[Problem Solving/Java] 백준 2231번 - 분해합

2024. 1. 8. 11:21·알고리즘 문제 풀이 (Problem Solving)

https://www.acmicpc.net/problem/2231

 

2231번: 분해합

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

www.acmicpc.net

문제

어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자리수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다. 예를 들어, 245의 분해합은 256(=245+2+4+5)이 된다. 따라서 245는 256의 생성자가 된다. 물론, 어떤 자연수의 경우에는 생성자가 없을 수도 있다. 반대로, 생성자가 여러 개인 자연수도 있을 수 있다.

자연수 N이 주어졌을 때, N의 가장 작은 생성자를 구해내는 프로그램을 작성하시오.

입력

첫째 줄에 자연수 N(1 ≤ N ≤ 1,000,000)이 주어진다.

출력

첫째 줄에 답을 출력한다. 생성자가 없는 경우에는 0을 출력한다.

첫 번째 시도

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

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int a = Integer.parseInt(br.readLine());
        int[] num = new int[1000001];
        String creat = "";
        int sum = 0;
        for (int i = 1; i < num.length; i++) {
            creat = Integer.toString(i);
            String[] sp = creat.split("");
            for (int j = 0; j < creat.length(); j++) {
                sum = sum + Integer.parseInt(sp[j]);
            }
            num[i] = i + sum;
            sum = 0;
        }
        for (int i = 0; i < num.length; i++) {
            if (num[i] == a) {
                System.out.println(i);
                break;
            }
            if (i == num.length - 1) {
                System.out.println(0);
                break;
            }
        }
    }
}

해결 방법

우선 모든 수의 분해합을 배열에 저장했다. 배열에 차례로 방문해서 저장된 값이 주어진 값 N과 일치하면 인덱스 i를 출력하고 break, 아닌 경우라면 0을 출력한다. 배열에 순서대로 방문하면 인덱스 값이 최소인 경우일 때이므로 바로 출력해도 최소값을 만족한다.

반응형

'알고리즘 문제 풀이 (Problem Solving)' 카테고리의 다른 글

[Problem Solving/Java] 백준 1436번 - 영화감독 숌  (0) 2024.01.09
[Problem Solving/Java] 백준 7568번 - 덩치  (0) 2024.01.08
[Problem Solving/Java] 백준 2798번 - 블랙잭  (0) 2024.01.08
[Problem Solving/Java] 백준 2447번 - 별 찍기 - 10  (0) 2024.01.08
[Problem Solving/Java] 백준 10870번 - 피보나치 수 5  (0) 2024.01.05
'알고리즘 문제 풀이 (Problem Solving)' 카테고리의 다른 글
  • [Problem Solving/Java] 백준 1436번 - 영화감독 숌
  • [Problem Solving/Java] 백준 7568번 - 덩치
  • [Problem Solving/Java] 백준 2798번 - 블랙잭
  • [Problem Solving/Java] 백준 2447번 - 별 찍기 - 10
LoopThinker
LoopThinker
모르는 것을 알아가고, 아는 것을 더 깊게 파고드는 공간
  • LoopThinker
    CodeMemoir
    LoopThinker
  • 전체
    오늘
    어제
    • 분류 전체보기 (192)
      • 개발 (Development) (128)
        • Algorithm (1)
        • Angular (1)
        • AWS (4)
        • DeepSeek (2)
        • Docker (6)
        • Git (3)
        • Java (23)
        • JavaScript (4)
        • Kafka (4)
        • Kubernetes (4)
        • Linux (6)
        • PostgreSQL (33)
        • Python (19)
        • React (3)
        • TypeScript (3)
        • Vue.js (5)
        • General (7)
      • 데이터 분석 (Data Analysis) (1)
      • 알고리즘 문제 풀이 (Problem Solving.. (27)
      • 자격증 (Certifications) (24)
        • ADsP (14)
        • 정보처리기사 (4)
        • Linux Master (5)
        • SQLD (1)
      • 기술 동향 (Tech Trends) (10)
      • 기타 (Others) (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    리눅스 마스터 2급 2차
    데이터분석
    Vue
    Linux master
    deepseek
    MyBatis
    백준
    JSON
    Kubernetes
    PostgreSQL
    pandas
    javascript
    Vue.js
    docker
    Kafka
    백준온라인저지
    typescript
    ADsP
    백준알고리즘
    리눅스 마스터 2급
    백준자바
    DevOps
    python
    리눅스 마스터
    오답노트
    자바
    springboot
    Linux
    AWS
    java
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
LoopThinker
[Problem Solving/Java] 백준 2231번 - 분해합
상단으로

티스토리툴바