프로그래머스 - N으로 표현(Java)
DP 문제입니다. 1~9까지의 숫자 N이 주어졌을 때, 해당 숫자를 8개 미만으로만 사용하여 number의 값을 구하는 문제입니다. 우선 덧셈 공식을 먼저 생각을 해야하는 문제입니다. 그림과 같이 2 이상의 수는 두 자리의 덧셈으로 나타낼 수 있습니다. 이것을 단순히 덧셈이 아니라 경우의 수로 바꿔서 생각해야 합니다. N이 4가 주어진다고 가정하겠습니다. 주어진 4를 1개 사용하면 {4}입니다. 2개 사용하면 {44, 4+4, 4-4, 4*4, 4/4} = {44, 8, 0, 16, 1}입니다. 즉, 1개를 사용한 것에서 사칙연산 및 이어 붙이기를 한 것이 됩니다. 3개를 사용하면 {444, 4+4+4, 4+4-4, (4+4)*4, (4+4)/4, 4-4+4, 4-4-4, ...}입니다. 즉, 2개를 사..
더보기
프로그래머스 - 타겟 넘버(Java)
dfs 문제입니다. dfs를 통해 모든 경우의 수. 즉, 완전 탐색을 하면서 조건에 맞는 것을 찾으면 됩니다, [구현 코드] class Solution { private static int cnt = 0; public static int solution(int[] numbers, int target) { dfs(0, numbers, target, 0); return cnt; } private static void dfs(int number, int[] numbers, int target, int depth) { if (depth == numbers.length) { if (number == target) { cnt++; } return; } // +일 때 dfs(number+numbers[depth], ..
더보기