백준 2231번: 분해합

2024. 4. 24. 02:54·PS

 


 

문제

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

 

 

 

 

실행 결과

 

 

 

코드(c++)

#include <iostream>
#include <string>
using namespace std;

int main() {
	int n;
	cin >> n;
	int result = 0;

	for (int i = 1; i < n; i++) {
		int sum = i;  // 분해합
		int temp = i;  // 자릿수 합 용

		while (sum > 0) {
			/* 자릿수별로 더하기 */
			sum += temp % 10;
			temp /= 10;
			if (temp == 0) break;
		}

		if (sum == n) {
			/* 입력받은 n과 일치되면 for 문 종료 */
			result = i;
			break;
		}
	}
	
	cout << result;
	return 0;
}

 

 

 

 

코드 설명

  1. 사용자로부터 정수 n을 입력받는다.
  2. 반복문을 돌면서 현재 숫자 i와 그 숫자의 각 자릿수를 더하여 그 결과를 sum에 저장한다.
  3. 만약 sum이 입력받은 n과 같아지면, 현재 숫자 i가 n의 생성자이다.

 

이 문제를 해결하기 위해서는 분해합 및 생성자의 개념을 정확하게 알고 있어야 한다.

생성자란 자기 자신과 자신의 각 자릿수를 더해서 원래의 수를 만들 수 있는 수이다.

 

생성자는 어떤 숫자와 그 숫자의 각 자리수를 더해서 특정한 '분해합'을 생성할 수 있는 수이다.

분해합은 어떤 숫자와 그 숫자의 각 자리수를 모두 더한 결과 값이다.

 

예를 들어, 245의 분해합은 256(=245+2+4+5)이 된다. 245는 256의 생성자가 된다. 

 

for문을 통해 1씩 키우면서 분해합을 만드는 생성자를 찾고,

그 내부 while 문 내에서 자릿수를 더하면서 입력값과 일치하는 순간 생성자를 구할수 있다.

 

 


 

문제 출처:

 

2231번: 분해합

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

www.acmicpc.net

 

저작자표시 (새창열림)

'PS' 카테고리의 다른 글

백준 2747번: 피보나치 수  (0) 2024.04.27
백준 2444번: 별 찍기 - 7  (0) 2024.04.26
백준 1977번: 완전제곱수  (0) 2024.04.23
백준 1924번: 2007년  (0) 2024.04.21
코드트리: 1시간 뒤 시간 출력 (c++)  (0) 2024.04.19
'PS' 카테고리의 다른 글
  • 백준 2747번: 피보나치 수
  • 백준 2444번: 별 찍기 - 7
  • 백준 1977번: 완전제곱수
  • 백준 1924번: 2007년
abyss-s
abyss-s
프론트엔드 개발합니다!
  • abyss-s
    abyss-s의 블로그입니다.
    abyss-s
  • 전체
    오늘
    어제
    • 분류 전체보기 (195)
      • Web (17)
        • JavaScript (6)
        • TypeScript (1)
        • React (6)
        • Vue (0)
        • Storybook (1)
        • Next.js (1)
      • Backend & Infra (8)
        • Database (3)
        • Node.js (2)
        • SpringBoot (1)
      • PS (71)
      • CS (30)
        • OS (13)
        • Structure & Algorithm (5)
        • Network (10)
        • 정보처리기사 (2)
      • Language (18)
        • OOP (1)
        • JAVA (13)
        • C++ (4)
      • Activities (18)
        • 멋쟁이 사자처럼 (2)
        • OSSCA (4)
        • LG U+ URECA (5)
        • Project (2)
        • Conference (2)
      • IT (3)
      • AI (0)
      • Git & Github (5)
      • Notion (1)
      • Statistics (11)
      • Book (5)
      • Diary (1)
      • Game (1)
  • 블로그 메뉴

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

    • Github
    • Baekjoon
    • X
    • LinkedIn
  • 공지사항

    • abyss-s의 티스토리에 오신 것을 환영합니다.
  • 인기 글

  • 태그

    생활코딩
    코드트리
    백준
    ossca
    React
    C++
    운영체제
    네트워크
    통계학
    Python
    자바스크립트
    Java
    BAEKJOON
    자바기반응용프로그래밍
    그리디
    OS
    BFS
    JavaScript
    DP
    파이썬
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
abyss-s
백준 2231번: 분해합
상단으로

티스토리툴바