개발자 HOON
πŸ› HOON DEVLog
개발자 HOON
전체 방문자
였늘
μ–΄μ œ
  • 😎 전체 μΉ΄ν…Œκ³ λ¦¬ (137)
    • πŸ“ μ‹ μž… 인터뷰 μ€€λΉ„ (7)
    • πŸ¦” μ·¨μ—…μ€€λΉ„ 기둝 (7)
    • β˜• μžλ°” : JAVA (5)
    • 🐍 μ½”λ”©ν…ŒμŠ€νŠΈ λŒ€λΉ„ : PS (80)
    • 🌱 λ°±μ—”λ“œ : Backend (13)
    • πŸ§ͺ 컴퓨터과학 : CS (11)
    • πŸ—‚ λ°μ΄ν„°λ² μ΄μŠ€ : DB (1)
    • πŸƒ‍♂️ DEVLOG (8)
    • βš™οΈ Trouble Shooting (5)

λΈ”λ‘œκ·Έ 메뉴

  • ν™ˆ
  • GitHub
  • Resume

곡지사항

인기 κΈ€

졜근 κΈ€

ν‹°μŠ€ν† λ¦¬

hELLO Β· Designed By μ •μƒμš°.
개발자 HOON

πŸ› HOON DEVLog

[ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€] νƒ€κ²Ÿ λ„˜λ²„ (level2, python)
🐍 μ½”λ”©ν…ŒμŠ€νŠΈ λŒ€λΉ„ : PS

[ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€] νƒ€κ²Ÿ λ„˜λ²„ (level2, python)

2022. 9. 12. 18:01

문제 μ„€λͺ…

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 μ΄ν•˜μΈ μžμ—°μˆ˜μž…λ‹ˆλ‹€.

μž…μΆœλ ₯ 예

μž…μΆœλ ₯ 예 μ„€λͺ…

 

μž…μΆœλ ₯ 예 #1

문제 μ˜ˆμ‹œμ™€ κ°™μŠ΅λ‹ˆλ‹€.

 

μž…μΆœλ ₯ 예 #2

+4+1-2+1 = 4
+4-1+2-1 = 4
  • 총 2κ°€μ§€ 방법이 μžˆμœΌλ―€λ‘œ, 2λ₯Ό return ν•©λ‹ˆλ‹€.

풀이 μ½”λ“œ

from collections import deque

def bfs(numbers, target):
    global answer
    queue = deque()
    queue.append([0, 0])
    
    while queue:
        idx, temp = queue.popleft()
        if idx == len(numbers) and temp == target:
            answer += 1
        else:
            if idx != len(numbers):
                queue.append([idx+1, temp + numbers[idx]])
                queue.append([idx+1, temp - numbers[idx]])
            
    return
        

def solution(numbers, target):
    global answer
    answer = 0
    bfs(numbers, target)
    return answer

BFS(λ„ˆλΉ„ μš°μ„  탐색)으둜 κ΅¬ν˜„ν–ˆλ‹€.

사싀 λͺ¨λ“  경우λ₯Ό ν™•μΈν•˜λŠ” 브루트 포슀 문제인데, 이λ₯Ό κ΅¬ν˜„ν•˜κΈ° μœ„ν•΄μ„œ BFSλ₯Ό ν™œμš©ν•œ 것이라고 보면 μ’‹λ‹€.

 

큐에 [numbers의 index, 총 ν•©]을 λ„£κ³ , μ•Œκ³ λ¦¬μ¦˜μ„ κ΅¬ν˜„ν•œλ‹€.

큐 λ‚΄λΆ€κ°€ λ‹€ 빌 λ•ŒκΉŒμ§€ numbers λ‚΄λΆ€ μš”μ†Œλ₯Ό λ‹€ κ±°μ³€λŠ”μ§€, 총 합이 κ΅¬ν•˜κ³ μž ν•˜λŠ” κ°’κ³Ό 같은지 κ³„μ†ν•΄μ„œ ν™•μΈν•œλ‹€.

 

μ €μž‘μžν‘œμ‹œ λΉ„μ˜λ¦¬ 동일쑰건 (μƒˆμ°½μ—΄λ¦Ό)

'🐍 μ½”λ”©ν…ŒμŠ€νŠΈ λŒ€λΉ„ : PS' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

[ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€] 더 맡게 (level2, python)  (0) 2022.09.12
[ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€] [3μ°¨] μ••μΆ• (level2, python)  (0) 2022.09.12
[ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€] λ„€νŠΈμ›Œν¬ (level3, python)  (0) 2022.09.12
[ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€] μ „ν™”λ²ˆν˜Έ λͺ©λ‘ (level2, python)  (0) 2022.09.12
[ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€] μ£Όμ°¨ μš”κΈˆ 계산 (level2, python)  (0) 2022.09.12
    '🐍 μ½”λ”©ν…ŒμŠ€νŠΈ λŒ€λΉ„ : PS' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€
    • [ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€] 더 맡게 (level2, python)
    • [ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€] [3μ°¨] μ••μΆ• (level2, python)
    • [ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€] λ„€νŠΈμ›Œν¬ (level3, python)
    • [ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€] μ „ν™”λ²ˆν˜Έ λͺ©λ‘ (level2, python)
    개발자 HOON
    개발자 HOON
    쒋은 λ°±μ—”λ“œ μ—”μ§€λ‹ˆμ–΄κ°€ 되기 μœ„ν•œ 기둝을 λͺ¨μ•˜μŠ΅λ‹ˆλ‹€. # μ£Όλ‹ˆμ–΄ # λ°±μ—”λ“œ # 개발자

    ν‹°μŠ€ν† λ¦¬νˆ΄λ°”