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

티스토리툴바