티스토리 뷰
반응형
문제
https://programmers.co.kr/learn/courses/30/lessons/42895
코딩테스트 연습 - N으로 표현
programmers.co.kr
풀이
- dfs를 이용해서 9번 넘게 N을 사용하면 리턴한다.
- 다음 선택지로 선택할 수 있는 경우의 수는 이전 숫자에 사칙연산을 하는 경우뿐이다.
#include<vector>
#include<algorithm>
using namespace std;
int answer = 9;
void dfs(int N, int number, int count, int currentNumber) {
if (count >= 9) return;
if (currentNumber == number) {
answer = min(answer, count);
return;
}
int temp = 0;
for (int i = 0; i < 9; i++) {
temp = temp * 10 + N; //5, 55, 555,...
dfs(N, number, count + 1 + i, currentNumber + temp);
dfs(N, number, count + 1 + i, currentNumber - temp);
dfs(N, number, count + 1 + i, currentNumber * temp);
dfs(N, number, count + 1 + i, currentNumber / temp);
}
}
int solution(int N, int number) {
dfs(N, number, 0, 0);
if (answer == 9) return -1;
return answer;
}
반응형
'알고리즘' 카테고리의 다른 글
| k진수에서 소수 개수 구하기 (0) | 2022.03.15 |
|---|---|
| 백준 7576 - 토마토 (1) | 2022.03.10 |
| [프로그래머스] 위클리 10주차 - 교점에 별 만들기 JAVA (1) | 2021.10.22 |
| [SW역량테스트 준비 기초] 수학 - 나머지 연산 (0) | 2020.05.05 |
| [프로그래머스] 가장 먼 노드 (1) | 2020.03.04 |