본문 바로가기

머리맞대는이야기/백준

[7490] 0 만들기

반응형

출처: 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