Skip to content

Best Time to Buy and Sell Stock IIΒ #53

@hsskey

Description

@hsskey

문제 μ„€λͺ… | Best Time to Buy and Sell Stock II

주식을 맀일 κ±°λž˜ν•  수 있으며, μ΅œλŒ€ ν•œ 주만 λ³΄μœ ν•  수 μžˆμ„ λ•Œ 얻을 수 μžˆλŠ” μ΅œλŒ€ 이읡을 κ΅¬ν•˜λŠ” λ¬Έμ œμž…λ‹ˆλ‹€. 같은 날에 κ΅¬λ§€ν•˜κ³  νŒλ§€ν•˜λŠ” 것도 κ°€λŠ₯

πŸ“ μ œμ•½μ‘°κ±΄

  • 1 <= prices.length <= 3 * 10^4
  • 0 <= prices[i] <= 10^4
  • ν•œ λ²ˆμ— μ΅œλŒ€ 1주만 보유 κ°€λŠ₯
  • 같은 λ‚  거래 κ°€λŠ₯

πŸ’‘ μ˜ˆμ‹œ

  • Input: [7,1,5,3,6,4]
    • Output: 7
    • μ„€λͺ…:
      • 2일차 ꡬ맀(1), 3일차 판맀(5) β†’ 이읡 4
      • 4일차 ꡬ맀(3), 5일차 판맀(6) β†’ 이읡 3
      • 총 이읡: 4 + 3 = 7

문제 ν•΄κ²° κ³Όμ •

Step 1: 문제 μ΄ν•΄ν•˜κΈ°

  • μž‘μ€ μ˜ˆμ‹œλ‘œ 직접 풀어보기:
    • [1,2,3] β†’ 맀일 였λ₯΄λ‹ˆ 2의 이읡
    • [3,2,1] β†’ 계속 ν•˜λ½ν•˜λ‹ˆ 0의 이읡
    • [1,2,1,3] β†’ 1β†’2 (이읡1) + 1β†’3 (이읡2) = 총 이읡 3

Step 2: μ ‘κ·Ό 방법

  • μ§κ΄€μ μœΌλ‘œ μƒκ°ν•˜κΈ°

    1. 맀일맀일의 가격 변동을 확인
    2. μƒμŠΉν•˜λŠ” κ΅¬κ°„μ—μ„œλŠ” 항상 이읡 μ‹€ν˜„ κ°€λŠ₯
    3. ν•˜λ½ν•˜λŠ” κ΅¬κ°„μ—μ„œλŠ” κ±°λž˜ν•˜μ§€ μ•ŠμŒ
  • μ•Œκ³ λ¦¬μ¦˜ ν‘œ μž‘μ„±

i = 1 (첫째날뢀터 μ‹œμž‘)
↓
였늘 가격(prices[i])κ³Ό μ–΄μ œ 가격(prices[i-1]) 비ꡐ
↓
였늘 가격이 더 λ†’λ‹€λ©΄
    β†’ 이읡(profit)에 차읡 λ”ν•˜κΈ°
↓
i++ ν•˜κ³  λ‹€μ‹œ 처음으둜

Step 3: μ½”λ“œ 섀계

  1. 총 이읡(profit) λ³€μˆ˜ μ΄ˆκΈ°ν™”
  2. λ‘˜μ§Έλ‚ (i=1)λΆ€ν„° λ§ˆμ§€λ§‰λ‚ κΉŒμ§€ 순회:
    • 당일 가격이 전일 가격보닀 λ†’μœΌλ©΄
    • 차읡을 총 이읡에 더함
  3. μ΅œμ’… 이읡 λ°˜ν™˜

Step 4: μ½”λ“œ κ΅¬ν˜„

var maxProfit = function(prices) {
    let profit = 0

    for(let i = 1; i < prices.length; i++) {
        if(prices[i] - prices[i - 1] > 0) {
            profit += prices[i] - prices[i - 1]
        }
    }

    return profit
};

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions