쿨타임이 있는 주식을 사고 팔기에 가장 좋은 시기
'휴지 기간이 있는 주식을 사고 파는 최적의 시간' 문제에 대한 자세한 가이드 및 Python 구현입니다.
1. 배우다
'쿨다운이 있는 주식을 사고 파는 가장 좋은 시기' 문제는 2D DP 섹션의 핵심 과제입니다.
이 구현은 Python의 중간 수준 논리에 중점을 둡니다.
우리는 제공되는 솔루션에서 기술적 정확성과 코드 가독성을 최우선으로 생각합니다.
2. Real-World Applications
3. Visual Intuition
쿨다운을 사용하여 주식을 사고 파는 최적의 시간에 대한 논리 흐름을 시각화합니다.
4. Prerequisites
5. Step-by-Step Thinking
1. Understand the problem
쿨다운이 포함된 주식을 사고 파는 최적의 시간에 대한 문제 설명을 주의 깊게 읽어보세요.
2. Formulate brute force
간단한 반복 솔루션 초안을 작성합니다.
3. Identify inefficiency
중복 계산을 찾으십시오.
4. Optimize search path
해싱이나 정렬을 사용하여 프로세스 속도를 높입니다.
5. Final Implementation
생산 표준에 맞게 코드를 정리합니다.
문제 설명
가격[i]이 i번째 날의 특정 주식 가격인 배열 가격이 제공됩니다.
달성할 수 있는 최대 이익을 찾아보세요. 다음 제한 사항에 따라 원하는 만큼 많은 거래를 완료할 수 있습니다(즉, 주식의 한 주를 여러 번 사고 파는 것).
- 주식을 매도한 후에는 다음 날(즉, 하루 쿨타임)에는 주식을 구매할 수 없습니다.
참고: 동시에 여러 거래에 참여할 수 없습니다(즉, 주식을 다시 구매하기 전에 반드시 매도해야 합니다).
maxProfit(prices: List[int]) -> int 함수를 작성하세요.
- •1 <= len(prices) <= 5000
- •0 <= prices[i] <= 1000
예
prices = [1,2,3,0,2]
3
Transactions = [buy, sell, cooldown, buy, sell].
prices = [1]
0
No transaction can be made.
Need a Hint?
Edge Cases to Watch
- 빈 입력 구조
- 단일 요소 입력
- 큰 수치 범위
해결할 준비가 되셨나요?
Open the problem in PyRun's browser-based Python editor. Your code runs fully offline — no server required.
인터뷰 통찰력 및 변형
복잡성 분석 분석
왜 시간인가?: Directly evaluates all possibilities.
왜 우주인가?: Uses standard local memory.
왜 시간인가?: Optimized paths reduce total operations.
왜 우주인가?: May trade memory for speed.
최적화된 솔루션 Python 코드
최적화된 솔루션 Python 코드
def max_profit_opt(prices):
dp = {} # (i, buying)
def dfs(i, buying):
if i >= len(prices): return 0
if (i, buying) in dp: return dp[(i, buying)]
if buying:
buy = dfs(i + 1, not buying) - prices[i]
skip = dfs(i + 1, buying)
dp[(i, buying)] = max(buy, skip)
else:
sell = dfs(i + 2, not buying) + prices[i]
skip = dfs(i + 1, buying)
dp[(i, buying)] = max(sell, skip)
return dp[(i, buying)]
return dfs(0, True)무차별 대입 코드(스포일러 보호)
무차별 대입 코드(스포일러 보호)
def max_profit_brute(prices):
def dfs(i, buying):
if i >= len(prices): return 0
if buying:
buy = dfs(i + 1, not buying) - prices[i]
skip = dfs(i + 1, buying)
return max(buy, skip)
else:
sell = dfs(i + 2, not buying) + prices[i]
skip = dfs(i + 1, buying)
return max(sell, skip)
return dfs(0, True)Algorithm Pattern Checklist
When dealing with 2D DP data patterns.
- Are constraints clear?
- Is there a linear or logarithmic optimization possible?
Key Revision Notes
표준 2D DP 문제 속성이 적용됩니다.
관련 질문
PyRun is built and maintained by an independent solo developer. If this helped your interview prep, consider buying a coffee!
권장 Python 리소스
관련 대화형 튜토리얼, 치트 시트, 코드 비교를 통해 지식을 확장하세요.
Python Try/Except 및 오류 처리
Python 스크립트가 충돌하는 것을 방지하세요. try, Except, finally 블록과 사용자 정의 예외를 올바르게 발생시키는 방법을 알아보세요.
Python에서 문자열을 Int로 변환하는 방법(안전한 캐스팅 및 베이스)
int() 함수를 사용하여 Python에서 문자열을 정수로 변환하는 방법을 알아보세요. 오류를 안전하게 처리하고 숫자를 2진수, 8진수, 16진수로 변환하세요.
Python DateTime 형식 지정 치트 시트
datetime, strftime 및 strptime을 사용하여 Python에서 날짜와 시간을 구문 분석하고 형식을 지정하는 방법을 알아보세요.
Python 데코레이터와 데코레이터 디자인 패턴: 주요 차이점
Python 데코레이터와 클래식 데코레이터 디자인 패턴을 비교해 보세요. 실행 가능한 코드를 사용하여 정의 시 함수 래핑과 런타임 동적 개체 구성 간의 차이점을 이해합니다.