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

2024. 9. 20. 01:11·알고리즘

[작성일: 2023. 10. 12]

 

 

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

 

 

풀이

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        boolean check = true;
        for (int i = 0; i < n; i++) {
            int num = i;
            int sum = 0;
            while (num > 0) {
                sum += num % 10;
                num /= 10;
            }
            if (sum + i == n) {
                System.out.println(i);
                check = false;
                break;
            }
        }
        if (check) {
            System.out.println(0);
        }
    }
}

 

n의 생성자는 n보다 항상 작다. 따라서 1 ~ n-1까지의 모든 숫자에 대해 분해합을 계산해서 n과 같은지 확인할 수 있다.

1부터 n-1까지 숫자 i를 선택하고(num) num의 각 자릿수의 합과 i를 더한 값을 계산한다.

만약 sum + i의 값이 n과 같다면 i는 n의 생성자가 된다.

 

가장 작은 생성자를 찾으면 되므로 처음에 n의 분해합을 만족하는 i를 찾게되면 break 후 반복문을 빠져나온다.

모든 숫자에 대해 분해합이 n이 되는 값을 찾지 못하면 check를 통해 0을 출력한다.

 

저작자표시 비영리 변경금지 (새창열림)
'알고리즘' 카테고리의 다른 글
  • [백준] 2751번: 수 정렬하기 2 - JAVA
  • [백준] 19532번: 수학은 비대면강의입니다 - JAVA
  • [백준] 2798번: 블랙잭 - JAVA
  • [백준] 24313번: 알고리즘 수업 - 점근적 표기 1 - JAVA
뚜비
뚜비
1년차 백엔드&iOS 개발자의 감자 탈출 블로그 🥔🥔
  • 뚜비
    뚜비의 개발로그
    뚜비
  • 전체
    오늘
    어제
  • 글쓰기     관리
    • Devlog
      • Back-End
        • Java
        • Spring
        • JPA
        • HTTP
        • Security
        • Back-End
        • Front-End
      • 알고리즘
      • iOS
        • Swift
      • Database
      • Tips
        • Git & GitHub
        • A to Z
      • 프로젝트
      • 생각정리
  • 태그

    최주호
    데이터베이스
    DB
    MVC
    Security
    의존성주입
    HTTP
    스프링
    변수
    자바스크립트
    다형성
    JPA
    Database
    알고리즘
    객체
    Java
    생성자
    html
    javascript
    Spring Security
    자바
    백준
    spring
    김영한
    프로그래머스
    sql
    게시판만들기
    jsp
    Swift
    성능최적화
  • hELLO· Designed By정상우.v4.10.0
뚜비
[백준] 2231번: 분해합 - JAVA
상단으로

티스토리툴바