본문 바로가기

ProgramSoliving

백준 : 1443 망가진 시계

반응형

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

 

1443번: 망가진 계산기

첫째 줄에 다솜이의 계산기가 표시할 수 있는 자리수 D와 다솜이가 하려고하는 연산의 수 P가 주어진다. D는 2보다 크거나 같고, 8보다 작거나 같은 자연수이고, P는 30보다 작거나 같은 음이아닌 �

www.acmicpc.net

 

Solved 난이도에 비해서 시웠던 문제.

 

중간에 적절히 가지치기를 해주면서 경우의 수를 구하면된다.  30번 곱할때 수들을 뽑을수 있는 경우의수를 생각하자. 이때 8*8*2 == 2*8*8 는 같기때문에 수들을 내림차순으로 정렬한다고 생각하면 편할것이다.

 

import java.util.Scanner;

public class 망가진계산기 {
	static long N, P;
	static long ans;

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);

		N = sc.nextInt();
		P = sc.nextInt();

		ans = 0L;

		dfs(1, 0, 9);
		ans = ans == 0 ? -1 : ans;
		System.out.println(ans);
	}

	public static void dfs(int num, int cnt, int start) {
		if ((num + "").length() > N)
			return;

		if (cnt == P) {
			ans = Math.max(ans, num);
			return;
		}

		for (int i = start; i >= 2; i--) {
			dfs(num * i, cnt + 1, i);
		}
	}
}
반응형

'ProgramSoliving' 카테고리의 다른 글

백준 : 3678 카탄의 개척자  (0) 2020.05.17
백준 : 1091  (0) 2020.05.17
백준 : 1360 되돌리기  (0) 2020.05.16
백준 : 1022  (0) 2020.05.14
백준 : 2252 DFS ,BFS  (0) 2020.05.13