브루트 포스 - 분해합 문제

Seok·2022년 1월 29일
0
post-thumbnail

문제풀이

이 문제는 숫자를 분해하여 조합해야하는 완전 탐색 문제이다.

  1. 1부터 입력받은 N 까지 한 개씩 모두 대입해본다.
  2. 만약 탐색 도중 생성자를 찾으면 종료하고 해당 생성자를 출력하며, N을 넘길 때 까지 찾지 못하면 0을 출력하면 된다.

소스 코드

package brute_force;

import java.util.*;

public class digit_generator {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		Scanner in = new Scanner(System.in);
		
		int N = in.nextInt();
		int answer = 0;
		
		for(int i = 0; i<N; i++) {
			int number = i;
			int sum = 0;
			
			while(number != 0) {
				sum += number %10;
				number = number/10;
			}
			if((sum + i) == N) {
				answer = i;
				break;
			}
		}
		System.out.println(answer);
	}

}

정리

  • 다들 브루트 포스 문제는 그렇게 어렵지 않게 풀 수 있을 것이다. 완전 탐색 알고리즘만 구현하고 만족하는 값을 찾을 때 까지 돌리면 되기 때문이다. 하지만 같은 같은 브루트 포스 알고리즘이라고 불가능한 범위를 제외시키면 성능을 향상 시킬 수 있으니 그 부분을 고려해보는 과정이 중요할 것 같다.
profile
네이티브 앱개발에 관심많은 주니어 개발자

0개의 댓글