반응형
출처: www.acmicpc.net/problem/7490
7490번: 0 만들기
각 테스트 케이스에 대해 ASCII 순서에 따라 결과가 0이 되는 모든 수식을 출력한다. 각 테스트 케이스의 결과는 한 줄을 띄워 구분한다.
www.acmicpc.net
풀이과정
1. 테스트 케이스마다 재귀 호출을 해보자.
2. 0 만드는 함수는 어떻게 할 것인가?
참고 코드
import java.io.*;
import java.util.*;
public class Main {
private static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
private static BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
public static void main(String[] args) throws IOException {
int T = Integer.parseInt(br.readLine());
for (int i = 0; i < T; i++) {
int N = Integer.parseInt(br.readLine());
func(0, 1, 1, 1, N, "1");
System.out.println();
}
}
public static void func(int sum, int op, int next, int prev, int N, String s) {
if (prev == N) {
sum += (next * op);
if (sum == 0)
System.out.println(s);
return;
}
func(sum, op, next * 10 + prev + 1, prev + 1, N, s + ' ' + (prev + 1));
func(sum + op * next, 1, prev + 1, prev + 1, N, s + '+' + (prev + 1));
func(sum + op * next, -1, prev + 1, prev + 1, N, s + '-' + (prev + 1));
}
}
코드 출처: www.acmicpc.net/source/22356747
로그인
www.acmicpc.net
memo
재귀를 구현할 때엔
함수에 조건문 처리 구조를 떠올리고
그 안에 어떠한 규칙이 들어갈지 문제를 보고 유추해내야한다.
이번 문제는 연산자의 규칙성을 따져서 재귀함수로 구현해야하는 문제였다.
다시 구현해 보아야겠다.
반응형
'머리맞대는이야기 > 백준' 카테고리의 다른 글
| [2920] 음계 (0) | 2020.10.14 |
|---|---|
| [1966] 프린터 큐 (0) | 2020.10.05 |
| [1074] Z (0) | 2020.10.04 |
| [2747] 피보나치 수 (0) | 2020.10.03 |
| [1939] 중량제한 (0) | 2020.09.30 |