deo2kim
λ§žμ™œν‹€
deo2kim
전체 방문자
였늘
μ–΄μ œ
  • λΆ„λ₯˜ 전체보기
    • CS
      • Algorithm
      • Data Structure
      • Network
      • DB
      • OS
    • Algorithm Problem
      • Python
      • JavaScript
    • Programming language
      • Python
      • JavaScript
    • Tool
      • Jquery
      • React
    • 개발
    • Infra

λΈ”λ‘œκ·Έ 메뉴

  • ν™ˆ
  • νƒœκ·Έ
  • λ°©λͺ…둝

곡지사항

인기 κΈ€

졜근 λŒ“κΈ€

졜근 κΈ€

ν‹°μŠ€ν† λ¦¬

λ°˜μ‘ν˜•
hELLO Β· Designed By μ •μƒμš°.
deo2kim
Algorithm Problem/Python

[python] ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€ - λ„λ‘‘μ§ˆ

[python] ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€ - λ„λ‘‘μ§ˆ
Algorithm Problem/Python

[python] ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€ - λ„λ‘‘μ§ˆ

2020. 9. 12. 20:41
λ°˜μ‘ν˜•

πŸ€”λ¬Έμ œ ν•΄κ²°

Lv4 | DP

 

"μΈμ ‘ν•œ 집은 ν„Έ 수 μ—†λ‹€" κΉŒμ§€λŠ” 크게 μ–΄λ €μš΄ λ¬Έμ œκ°€ μ•„λ‹ˆμ§€λ§Œ

"λ§ˆμ„μ΄ μ›ν˜•μœΌλ‘œ λ˜μ–΄ μžˆλ‹€" μ—μ„œ ν•œλ²ˆ 더 μƒκ°ν•˜κ²Œ ν•˜λŠ” 문제!!

-> 0번째 집을 ν„°λŠ” 경우( λ§ˆμ§€λ§‰ 집을 ν„Έμ§€ λͺ»ν•œλ‹€ )와 0번째 집을 μ•ˆν„°λŠ” 경우 λ‘κ°€μ§€λ‘œ λ‚˜λˆŒ 수 μžˆλ‹€.

 

λ¨Όμ € 0λ²ˆμ§‘μ„ ν„Έ 경우!

  • 0λ²ˆμ§‘μ— 듀렀을 λ•Œ κ°€μž₯ λ§Žμ€ λˆμ„ κ°€μ Έμ˜€λŠ” κ²½μš°λŠ” 0λ²ˆμ§‘μ„ ν„΄λ‹€. dp[0] = money[0]
  • 1λ²ˆμ§‘μ— 듀렀을 λ•Œ κ°€μž₯ λ§Žμ€ λˆμ„ κ°€μ Έμ˜€λŠ” κ²½μš°λŠ” 1λ²ˆμ§‘μ„ ν„°λŠ” κ²½μš°μ§€λ§Œ μš°λ¦¬λŠ” 1λ²ˆμ§‘μ„ λ°˜λ“œμ‹œ ν„Έμ—ˆλ‹€κ³  κ°€μ •ν–ˆμœΌλ―€λ‘œ μΈμ ‘ν•œ 2λ²ˆμ§‘μ€ ν„Έ 수 μ—†λ‹€. dp[1] = 0
  • 2λ²ˆμ§‘μ— 듀렀을 λ•Œ: μΈμ ‘ν•œ 1λ²ˆμ§‘μ΄ μ•„λ‹Œ 0λ²ˆμ§‘ λ˜λŠ” -1λ²ˆμ§‘(2번일 λ•ŒλŠ” μ—†λ‹€) 쀑 λˆμ„ 많이 κ°€μ Έμ™”λ˜ μ§‘μ—μ„œ μ˜¨λ‹€.
    dp[2] = money[i] + max(dp[i-2], dp[i-1])
  • λ§ˆμ§€λ§‰μœΌλ‘œ n번째 집은 μ—†λ‹€κ³  κ°€μ •ν•΄μ•Όν•œλ‹€. (1λ²ˆμ§‘μ„ ν„Έμ—ˆμœΌλ―€λ‘œ 1번과 μΈμ ‘ν•œ nλ²ˆμ§‘μ€ ν„Έλ©΄ μ•ˆλ¨!!)

λ‹€μŒ 0λ²ˆμ§‘μ„ μ•ˆν„°λŠ” 경우!

  • 0λ²ˆμ§‘μ„ ν„Έμ§€ μ•ŠμœΌλ―€λ‘œ dp[0] = 0
  • 0λ²ˆμ§‘ μ•ˆν„Έμ—ˆμœΌλ‹ˆ 1λ²ˆμ§‘μ€ 탄닀. dp[1] = money[1]

πŸ’¨

πŸ’»μ†ŒμŠ€ μ½”λ“œ

def solution(money):
    answer = 0
    n = len(money)
    # 0λ²ˆμ§‘ ν„ΈκΈ°
    dp1 = [0] * (n - 1)
    dp1[0] = money[0]
    dp1[1] = 0
    for i in range(2, n - 1):
        dp1[i] = money[i] + max(dp1[i - 2], dp1[i - 3])

    # 0λ²ˆμ§‘ μ•ˆν„ΈκΈ°
    dp2 = [0] * (n)
    dp2[0] = 0
    dp2[1] = money[1]
    for i in range(2, n):
        dp2[i] = money[i] + max(dp2[i - 2], dp2[i - 3])

    answer = max(max(dp1), max(dp2))
    return answer

 

 

πŸ“•λ¬Έμ œ 확인

좜처: ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€

링크: https://programmers.co.kr/learn/courses/30/lessons/42897

 

μ½”λ”©ν…ŒμŠ€νŠΈ μ—°μŠ΅ - λ„λ‘‘μ§ˆ

도둑이 μ–΄λŠ λ§ˆμ„μ„ ν„Έ κ³„νšμ„ ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. 이 λ§ˆμ„μ˜ λͺ¨λ“  집듀은 μ•„λž˜ κ·Έλ¦Όκ³Ό 같이 λ™κ·Έλž—κ²Œ λ°°μΉ˜λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€. 각 집듀은 μ„œλ‘œ μΈμ ‘ν•œ μ§‘λ“€κ³Ό λ°©λ²”μž₯μΉ˜κ°€ μ—°κ²°λ˜μ–΄ 있기 λ•Œλ¬Έμ— μΈμ ‘ν•œ οΏ½οΏ½

programmers.co.kr


문제 μ„€λͺ…

도둑이 μ–΄λŠ λ§ˆμ„μ„ ν„Έ κ³„νšμ„ ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. 이 λ§ˆμ„μ˜ λͺ¨λ“  집듀은 μ•„λž˜ κ·Έλ¦Όκ³Ό 같이 λ™κ·Έλž—κ²Œ λ°°μΉ˜λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.

각 집듀은 μ„œλ‘œ μΈμ ‘ν•œ μ§‘λ“€κ³Ό λ°©λ²”μž₯μΉ˜κ°€ μ—°κ²°λ˜μ–΄ 있기 λ•Œλ¬Έμ— μΈμ ‘ν•œ 두 집을 ν„Έλ©΄ 경보가 μšΈλ¦½λ‹ˆλ‹€.

각 집에 μžˆλŠ” 돈이 λ‹΄κΈ΄ λ°°μ—΄ moneyκ°€ μ£Όμ–΄μ§ˆ λ•Œ, 도둑이 ν›”μΉ  수 μžˆλŠ” 돈의 μ΅œλŒ“κ°’μ„ return ν•˜λ„λ‘ solution ν•¨μˆ˜λ₯Ό μž‘μ„±ν•˜μ„Έμš”.

μ œν•œμ‚¬ν•­

  • 이 λ§ˆμ„μ— μžˆλŠ” 집은 3개 이상 1,000,000개 μ΄ν•˜μž…λ‹ˆλ‹€.
  • money λ°°μ—΄μ˜ 각 μ›μ†ŒλŠ” 0 이상 1,000 μ΄ν•˜μΈ μ •μˆ˜μž…λ‹ˆλ‹€.

μž…μΆœλ ₯ 예

money return
[1, 2, 3, 1] 4
λ°˜μ‘ν˜•
μ €μž‘μžν‘œμ‹œ λΉ„μ˜λ¦¬ λ³€κ²½κΈˆμ§€

'Algorithm Problem > Python' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

[python] ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€ - 징검닀리  (4) 2020.09.13
[python] ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€ - N-Queen  (2) 2020.09.13
[python] ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€ - μ—¬ν–‰κ²½λ‘œ  (0) 2020.09.12
[python] ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€ - λ¬΄μ§€μ˜ λ¨Ήλ°© 라이브(2019 KAKAO BLIND RECRUITMENT)  (0) 2020.09.11
[python] ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€ - 블둝 κ²Œμž„(2019 KAKAO BLIND RECRUITMENT)  (3) 2020.09.11
  • πŸ€”λ¬Έμ œ ν•΄κ²°
  • πŸ’»μ†ŒμŠ€ μ½”λ“œ
  • πŸ“•λ¬Έμ œ 확인
'Algorithm Problem/Python' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€
  • [python] ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€ - 징검닀리
  • [python] ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€ - N-Queen
  • [python] ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€ - μ—¬ν–‰κ²½λ‘œ
  • [python] ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€ - λ¬΄μ§€μ˜ λ¨Ήλ°© 라이브(2019 KAKAO BLIND RECRUITMENT)
deo2kim
deo2kim
μ½”λ”© κΈ°λ‘ν•˜κΈ°

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

단좕킀

λ‚΄ λΈ”λ‘œκ·Έ

λ‚΄ λΈ”λ‘œκ·Έ - κ΄€λ¦¬μž ν™ˆ μ „ν™˜
Q
Q
μƒˆ κΈ€ μ“°κΈ°
W
W

λΈ”λ‘œκ·Έ κ²Œμ‹œκΈ€

κΈ€ μˆ˜μ • (κΆŒν•œ μžˆλŠ” 경우)
E
E
λŒ“κΈ€ μ˜μ—­μœΌλ‘œ 이동
C
C

λͺ¨λ“  μ˜μ—­

이 νŽ˜μ΄μ§€μ˜ URL 볡사
S
S
맨 μœ„λ‘œ 이동
T
T
ν‹°μŠ€ν† λ¦¬ ν™ˆ 이동
H
H
단좕킀 μ•ˆλ‚΄
Shift + /
⇧ + /

* λ‹¨μΆ•ν‚€λŠ” ν•œκΈ€/영문 λŒ€μ†Œλ¬Έμžλ‘œ 이용 κ°€λŠ₯ν•˜λ©°, ν‹°μŠ€ν† λ¦¬ κΈ°λ³Έ λ„λ©”μΈμ—μ„œλ§Œ λ™μž‘ν•©λ‹ˆλ‹€.