๐Ÿ”ฅ[99ํด๋Ÿฝ ์ฝ”ํ…Œ ์Šคํ„ฐ๋””] 34์ผ์ฐจ TIL - ํƒ€๊ฒŸ ๋„˜๋ฒ„

HOONSSACยท2024๋…„ 8์›” 24์ผ
1

99Club Coding Test Study

๋ชฉ๋ก ๋ณด๊ธฐ
34/41
post-thumbnail

โณ๋ฌธ์ œ

n๊ฐœ์˜ ์Œ์ด ์•„๋‹Œ ์ •์ˆ˜๋“ค์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์ •์ˆ˜๋“ค์„ ์ˆœ์„œ๋ฅผ ๋ฐ”๊พธ์ง€ ์•Š๊ณ  ์ ์ ˆํžˆ ๋”ํ•˜๊ฑฐ๋‚˜ ๋นผ์„œ ํƒ€๊ฒŸ ๋„˜๋ฒ„๋ฅผ ๋งŒ๋“ค๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด [1, 1, 1, 1, 1]๋กœ ์ˆซ์ž 3์„ ๋งŒ๋“ค๋ ค๋ฉด ๋‹ค์Œ ๋‹ค์„ฏ ๋ฐฉ๋ฒ•์„ ์“ธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

-1+1+1+1+1 = 3
+1-1+1+1+1 = 3
+1+1-1+1+1 = 3
+1+1+1-1+1 = 3
+1+1+1+1-1 = 3

์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ˆซ์ž๊ฐ€ ๋‹ด๊ธด ๋ฐฐ์—ด numbers, ํƒ€๊ฒŸ ๋„˜๋ฒ„ target์ด ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ ์ˆซ์ž๋ฅผ ์ ์ ˆํžˆ ๋”ํ•˜๊ณ  ๋นผ์„œ ํƒ€๊ฒŸ ๋„˜๋ฒ„๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์˜ ์ˆ˜๋ฅผ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”.

๐Ÿšจ์ œํ•œ ์‚ฌํ•ญ

  • ์ฃผ์–ด์ง€๋Š” ์ˆซ์ž์˜ ๊ฐœ์ˆ˜๋Š” 2๊ฐœ ์ด์ƒ 20๊ฐœ ์ดํ•˜์ž…๋‹ˆ๋‹ค.
  • ๊ฐ ์ˆซ์ž๋Š” 1 ์ด์ƒ 50 ์ดํ•˜์ธ ์ž์—ฐ์ˆ˜์ž…๋‹ˆ๋‹ค.
  • ํƒ€๊ฒŸ ๋„˜๋ฒ„๋Š” 1 ์ด์ƒ 1000 ์ดํ•˜์ธ ์ž์—ฐ์ˆ˜์ž…๋‹ˆ๋‹ค.

๐Ÿ“ƒ์ž…์ถœ๋ ฅ ์˜ˆ

numberstargetreturn
[1,1,1,1,1]35
[4,1,2,1]42

์ž…์ถœ๋ ฅ ์˜ˆ #1

๋ฌธ์ œ ์˜ˆ์‹œ์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ #2

+4+1-2+1 = 4
+4-1+2-1 = 4
  • ์ด 2๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์žˆ์œผ๋ฏ€๋กœ, 2๋ฅผ return ํ•ฉ๋‹ˆ๋‹ค.

โœ๏ธํ’€์ด

๋ชจ๋“  ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ํšจ์œจ์ ์œผ๋กœ ํƒ์ƒ‰ํ•˜๊ธฐ ์œ„ํ•ด DFS๋ฅผ ์‚ฌ์šฉํ•˜์˜€๋‹ค.
numbers ๋ฐฐ์—ด์˜ 0๋ฒˆ์งธ ์ธ๋ฑ์Šค๋ถ€ํ„ฐ ๋งˆ์ง€๋ง‰ ์ธ๋ฑ์Šค๊นŒ์ง€ ์ˆœํšŒํ•˜๋ฉด์„œ,
ํ˜„์žฌ ์ˆซ์ž๋ฅผ ๋”ํ•˜๋Š” ๊ฒฝ์šฐ์™€, ๋นผ๋Š” ๊ฒฝ์šฐ ๊ฐ๊ฐ์˜ ๊ฒฐ๊ณผ๋ฅผ ์žฌ๊ท€๋ฅผ ํ†ตํ•ด ๊ตฌํ•œ๋‹ค.

๐Ÿ‘พ์ „์ฒด ์ฝ”๋“œ

class Solution {
    public static int solution(int[] numbers, int target) {
        return dfs(numbers, target, 0, 0);
    }
    
    public static int dfs(int[] numbers, int target, int index, int currSum) {
        // ๋ชจ๋“  ์ˆซ์ž๋ฅผ ์กฐํ•ฉํ•œ ๊ฒฝ์šฐ
        if (index == numbers.length) {
            if (currSum == target) {
                return 1; // target๊ณผ ์ผ์น˜ํ•  ๊ฒฝ์šฐ
            }
            else {
                return 0; // target๊ณผ ์ผ์น˜ํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ
            }
        }

        // ํ˜„์žฌ ์ˆซ์ž๋ฅผ ๋”ํ•˜๋Š” ๊ฒฝ์šฐ
        int add = dfs(numbers, target, index + 1, currSum + numbers[index]);

        // ํ˜„์žฌ ์ˆซ์ž๋ฅผ ๋นผ๋Š” ๊ฒฝ์šฐ
        int sub = dfs(numbers, target, index + 1, currSum - numbers[index]);

        return add + sub;
    }
}

๐Ÿ‘พ์ฝ”๋“œ ์„ค๋ช…

  1. numbers, target, ํ˜„์žฌ ์ธ๋ฑ์Šค(index), ํ˜„์žฌ๊นŒ์ง€์˜ ๊ฒฐ๊ณผ(currSum)๋ฅผ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๊ฐ€์ง€๋Š” dfs ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค.

  2. dfs๋ฅผ ์ง„ํ–‰ํ•˜๋‹ค ๋ชจ๋“  ์ˆซ์ž๋ฅผ ์กฐํ•ฉํ•œ ๊ฒฝ์šฐ ์ฆ‰, ํ˜„์žฌ ์ธ๋ฑ์Šค๊ฐ€ numbers ๋ฐฐ์—ด์˜ ๊ธธ์ด๋ž‘ ๊ฐ™์•„์ง„ ๊ฒฝ์šฐ, ํ˜„์žฌ๊นŒ์ง€์˜ ๊ฒฐ๊ณผ currSum์„ target์ด๋ž‘ ๋น„๊ตํ•œ๋‹ค.

  3. currSum๊ณผ target์ด ์ผ์น˜ํ•œ ๊ฒฝ์šฐ, ์šฐ๋ฆฌ๊ฐ€ ๊ตฌํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ์˜ ์ˆ˜์ด๊ธฐ ๋•Œ๋ฌธ์— 1์„ ๋ฆฌํ„ดํ•ด ์ค€๋‹ค.

  4. currSum๊ณผ target์ด ์ผ์น˜ํ•œ ๊ฒฝ์šฐ, ์›ํ•˜๋Š” ๊ฒฝ์šฐ์˜ ์ˆ˜๊ฐ€ ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— 0์„ ๋ฆฌํ„ดํ•ด ์ค€๋‹ค.

  5. currSum์— ํ˜„์žฌ ์ธ๋ฑ์Šค์˜ ์š”์†Œ๋ฅผ ๋”ํ•œ ๊ฐ’์œผ๋กœ ๋‹ค์Œ ์ธ๋ฑ์Šค์— ๋Œ€ํ•œ dfs๋ฅผ ์žฌ๊ท€ ํ˜ธ์ถœํ•œ๋‹ค.

  6. currSum์— ํ˜„์žฌ ์ธ๋ฑ์Šค์˜ ์š”์†Œ๋ฅผ ๋บ€ ๊ฐ’์œผ๋กœ ๋‹ค์Œ ์ธ๋ฑ์Šค์— ๋Œ€ํ•œ dfs๋ฅผ ์žฌ๊ท€ ํ˜ธ์ถœํ•œ๋‹ค.


๐Ÿ”—๋ฌธ์ œ ๋งํฌ
๐Ÿ’ปRepository

profile
ํ›ˆ์‹น์˜ ๊ฐœ๋ฐœ์—ฌํ–‰

1๊ฐœ์˜ ๋Œ“๊ธ€

comment-user-thumbnail
2024๋…„ 8์›” 24์ผ

์œผ์Œฐ์œผ์Œฐ ํ™”์ดํŒ…์ž…๋‹ˆ๋‹น๐Ÿ‘Š๐Ÿ”ฅ๐Ÿ‘Š๐Ÿ”ฅ

๋‹ต๊ธ€ ๋‹ฌ๊ธฐ