https://www.acmicpc.net/problem/2231
2231번: 분해합
어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자리수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다. 예를 들어, 245의 분해합은 256(=245+2+4+5)이
www.acmicpc.net
문제풀이
일반적인 DFS 문제입니다.
종료조건은 1 ~ N 까지만 조사하도록 설정하면 됩니다.
이외의 것은 일반적인 재귀함수를 사용하여 해결했습니다.
코드
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.*; public class Main { public static int N; public static int result = 0; public static void main(String[] args) throws IOException{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLine()); N = Integer.parseInt(st.nextToken()); simulate(1, 0); System.out.println(result); } public static void simulate(int idx, int sum) { if( idx > N) { result = 0; return ; } if( sum == N ) { result = idx - 1; return ; } int idxtemp = idx; int sumtemp = idx; while(idxtemp > 0) { sumtemp += idxtemp % 10; idxtemp /= 10; } simulate(idx+1, sumtemp); } }
'알고리즘 > 백준' 카테고리의 다른 글
[백준] 18312 시각 - 완전탐색 JAVA (0) | 2023.07.07 |
---|---|
[백준] 19532 수학은 비대면강의입니다 - 완전탐색 JAVA (0) | 2023.07.07 |
[백준] 2798 블랙잭 - DFS + 완전탐색 JAVA (0) | 2023.07.07 |
[백준] 22868 산책 (small) - BFS + 아이디어 + 시간초과 JAVA (0) | 2023.07.06 |
[백준] 9466 텀 프로젝트 - DFS + 아이디어 + 시간초과 JAVA (0) | 2023.07.06 |