PS/๋ฐฑ์ค€

[๋ฐฑ์ค€ | 9095] 1, 2, 3 ๋”ํ•˜๊ธฐ - Java

yaho!! 2024. 8. 14. 23:31

๐Ÿ“ƒ ์ œ์ถœ

import java.util.Scanner;

public class Main {
    static int[] arr = {1, 2, 3};
    static int N;
    static int answer;

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

        int tc = sc.nextInt();
        for (int i = 0; i < tc; i++) {
            N = sc.nextInt();
            answer = 0;
            dfs(0);
            System.out.println(answer);
        }
    }

    public static void dfs(int sum) {
        if (sum >= N) {
            if (sum == N) {
                answer++;
            }
            return;
        }

        for (int i : arr) {
            dfs(sum + i);
        }
    }
}

โœ ํ’€์ด

๋ฐฑํŠธ๋ž˜ํ‚น ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๋ฐฑํŠธ๋ž˜ํ‚น์„ ํ†ตํ•ด ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ์กฐํ•ฉ์„ ์‹œ๋„ํ•˜์˜€๊ณ  ์ฃผ์–ด์ง„ ์ˆ˜ `N`๊ณผ ๊ฐ™์€ ๊ฒฝ์šฐ ์นด์šดํŠธ ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

 

ํ•ต์‹ฌ ์•„์ด๋””์–ด

  • DFS
    • ๋งค ํ˜ธ์ถœ๋งˆ๋‹ค ํ˜„์žฌ๊นŒ์ง€์˜ ํ•ฉ๊ณ„๋ฅผ ์ €์žฅํ•˜์˜€์Šต๋‹ˆ๋‹ค.
    • ๋งŒ์•ฝ ํ˜„์žฌ ํ•ฉ๊ณ„๊ฐ€ `N`๋ณด๋‹ค ํฌ๋‹ค๋ฉด ๊ทธ ๊ฒฝ์šฐ๋Š” ๋” ์ด์ƒ ์ง„ํ–‰ํ•  ํ•„์š”๊ฐ€ ์—†์œผ๋ฏ€๋กœ ๋ฆฌํ„ดํ•ฉ๋‹ˆ๋‹ค.
    • ํ˜„์žฌ ํ•ฉ๊ณ„๊ฐ€ `N`๊ณผ ๊ฐ™์œผ๋ฉด ์œ ์š”ํ•œ ์กฐํ•ฉ์„ ์ฐพ์•˜๋‹ค๊ณ  ํŒ๋‹จํ•˜์—ฌ `answer`์„ ์ฆ๊ฐ€ํ•˜์˜€์Šต๋‹ˆ๋‹ค.
  • ๋ฐฑํŠธ๋ž˜ํ‚น
    • ๊ฐ๊ฐ์˜ ์žฌ๊ท€ ํ˜ธ์ถœ์—์„œ 1, 2, 3 ์ค‘ ํ•˜๋‚˜๋ฅผ ๋”ํ•˜์—ฌ ์ƒˆ๋กœ์šด ํ•ฉ๊ณ„๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
    • ์žฌ๊ท€์ ์œผ๋กœ ํ˜ธ์ถœํ•˜์—ฌ ๋ชจ๋“  ๊ฐ€๋Šฅํ•œ ํ•ฉ๊ณ„ ์กฐํ•ฉ์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
  • ๊ธฐ์ €์กฐ๊ฑด
    • ํ˜„์žฌ ํ•ฉ๊ณ„๊ฐ€ N๋ณด๋‹ค ํฌ๋ฉด ๋” ์ด์ƒ ํƒ์ƒ‰ํ•˜์ง€ ์•Š๊ณ  ๋Œ์•„๊ฐ‘๋‹ˆ๋‹ค.
    • ํ˜„์žฌ ํ•ฉ๊ณ„๊ฐ€ ์ •ํ™•ํžˆ N์— ๋„๋‹ฌํ•˜๋ฉด ๊ฐ€๋Šฅํ•œ ์กฐํ•ฉ์œผ๋กœ ์ธ์ •ํ•˜์—ฌ ์นด์šดํŠธ๋ฅผ ์ฆ๊ฐ€์‹œํ‚ต๋‹ˆ๋‹ค.

 

๊ธฐ๊ดดํ•˜๋‹ค