λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°

Algorithm/Programmers

[3μ£Όμ°¨] ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€ νƒ€κ²Ÿ λ„˜λ²„

νƒ€κ²Ÿ λ„˜λ²„ 문제 풀이

πŸ’»Q

n개의 음이 μ•„λ‹Œ μ •μˆ˜κ°€ μžˆμŠ΅λ‹ˆλ‹€.
이 수λ₯Ό 적절히 λ”ν•˜κ±°λ‚˜ λΉΌμ„œ νƒ€κ²Ÿ λ„˜λ²„λ₯Ό λ§Œλ“€λ €κ³  ν•©λ‹ˆλ‹€.
예λ₯Ό λ“€μ–΄ [1, 1, 1, 1, 1]둜 숫자 3을 λ§Œλ“€λ €λ©΄ λ‹€μŒ λ‹€μ„― 방법을 μ“Έ 수 μžˆμŠ΅λ‹ˆλ‹€.

μ‚¬μš©ν•  수 μžˆλŠ” μˆ«μžκ°€ λ‹΄κΈ΄ λ°°μ—΄ numbers, νƒ€κ²Ÿ λ„˜λ²„ target이 λ§€κ°œλ³€μˆ˜λ‘œ μ£Όμ–΄μ§ˆ λ•Œ 숫자λ₯Ό 적절히 λ”ν•˜κ³  λΉΌμ„œ νƒ€κ²Ÿ λ„˜λ²„λ₯Ό λ§Œλ“œλŠ” λ°©λ²•μ˜ 수λ₯Ό return ν•˜λ„λ‘ solution ν•¨μˆ˜λ₯Ό μž‘μ„±ν•΄μ£Όμ„Έμš”.
πŸ’‍♀️ μ œν•œ 사항
• μ£Όμ–΄μ§€λŠ” 숫자의 κ°œμˆ˜λŠ” 2개 이상 20개 μ΄ν•˜μž…λ‹ˆλ‹€.
• κ° μˆ«μžλŠ” 1 이상 50 μ΄ν•˜μΈ μžμ—°μˆ˜μž…λ‹ˆλ‹€.
• νƒ€κ²Ÿ λ„˜λ²„λŠ” 1 이상 1000 μ΄ν•˜μΈ μžμ—°μˆ˜μž…λ‹ˆλ‹€.

μž…μΆœλ ₯ 예

 

πŸ’‘A

이 λ¬Έμ œλŠ” μ–΄λ–»κ²Œ ν’€μ–΄μ•Ό ν•  μ§€ 감이 μ•ˆ μž‘ν˜”λ‹€. κ·Έλž˜μ„œ λ‹€λ₯Έ 풀이듀을 λ³΄λ©΄μ„œ κ³΅λΆ€ν–ˆλ‹€.
μž¬κ·€λ₯Ό μ΄μš©ν•œ 풀이법듀이 λ§Žμ•˜κ³  μž¬κ·€μ— λŒ€ν•΄μ„œλ„ 더 많이 μ•Œμ•„λ³Ό 수 μžˆμ—ˆλ˜ λ¬Έμ œμ˜€λ‹€.
class Solution {
    public int solution(int[] numbers, int target) {
    
        int answer = 0;

        answer = bfs(numbers, target, numbers[0], 1) 
               + bfs(numbers, target, -numbers[0], 1);
               
        return answer;
    }

    public int bfs(int[] numbers, int target, int sum, int i) {
    
        if (i == numbers.length) {
            if (sum == target) {
                return 1;
            } else {
                return 0;
            }
        }

        int result = 0;
        result += bfs(numbers, target, sum + numbers[i], i+1);
        result += bfs(numbers, target, sum - numbers[i], i+1);

        return result;
    }
}​

 

 

 

πŸ‘€μ°Έκ³ .

도움받은 λΈ”λ‘œκ·Έ
 

[ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€] 깊이/λ„ˆλΉ„ μš°μ„  탐색(DFS/BFS) νƒ€κ²Ÿλ„˜λ²„ _ μžλ°”Java

λ‚œμ΄λ„: Level 2  1. 문제  | 문제 μ„€λͺ… n개의 음이 μ•„λ‹Œ μ •μˆ˜κ°€ μžˆμŠ΅λ‹ˆλ‹€. 이 수λ₯Ό 적절히 λ”ν•˜κ±°λ‚˜ λΉΌμ„œ νƒ€κ²Ÿ λ„˜λ²„λ₯Ό λ§Œλ“€λ €κ³  ν•©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄ [1, 1, 1, 1, 1]둜 숫자 3을 λ§Œλ“€λ €λ©΄ λ‹€μŒ λ‹€μ„― 방법

young-9.tistory.com