[Q. 12] 주식을 사고팔기 가장 좋은 시점

2023. 3. 21. 14:25·코딩테스트/알고리즘
한 번의 거래로 낼 수 있는 최대 이익을 산출하라.

 

구하는 방법은 간단하다. 저점에 사서 고점에 파는 것이다. 가장 쉽게 구하는 방법은 현재 시점에서 가장 높게 팔 수 있는 가격과의 차이를 구하여 비교하는 방법인데 이 방법은 n의 제곱으로 매우 오래 걸린다.

이를 O(n)에 해결하기 위해 저점을 구한 후, 가격차이 값을 갱신해 가며 max 값을 구하는 방식으로 해결한다.

 

먼저, 저점과 이익의 값을 초기화 한다.

min_price = sys.maxsize
profit = 0

 

그 다음 price 값을 살펴보며, 저점을 설정하고 저점과 현재 가격의 차이를 비교하여 최대 이익을 갱신한다.

for price in prices:
    min_price = min(min_price, price)
    profit = max(profit, price - min_price)

 

전체 코드는 다음과 같다.

class Solution:
    def maxProfit(self, prices: List[int]) -> int:

        min_price = sys.maxsize
        profit = 0

        for price in prices:
            min_price = min(min_price, price)
            profit = max(profit, price - min_price)

        return profit
저작자표시 비영리 변경금지 (새창열림)

'코딩테스트 > 알고리즘' 카테고리의 다른 글

[Q. 14] 두 정렬 리스트의 병합  (0) 2023.03.21
[Q. 13] 팰린드롬 연결 리스트  (0) 2023.03.21
[Q. 11] 자신을 제외한 배열의 곱  (0) 2023.03.21
[Q. 10] 배열 파티션 1  (0) 2023.03.20
[Q. 09] 세 수의 합  (0) 2023.03.20
'코딩테스트/알고리즘' 카테고리의 다른 글
  • [Q. 14] 두 정렬 리스트의 병합
  • [Q. 13] 팰린드롬 연결 리스트
  • [Q. 11] 자신을 제외한 배열의 곱
  • [Q. 10] 배열 파티션 1
뚝딱뚝딱2
뚝딱뚝딱2
  • 뚝딱뚝딱2
    개발도상국
    뚝딱뚝딱2
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 공부
        • Java
        • Spring Boot
        • LORA
      • Web
        • 인스타 클론 코딩
        • GPT 응답 API 서버
        • Spring Boot 예외 처리
        • 코테 준비용 서비스 만들기
      • DevOps
        • 쿠버네티스
        • 서버 만들기
      • 코딩테스트
        • 알고리즘
      • 교육
        • 스파르타코딩클럽 - 내일배움단
        • 혼자 공부하는 컴퓨터 구조 운영체제
      • 잡다한것
  • 블로그 메뉴

    • 홈
  • 링크

    • GITHUB
  • 공지사항

  • 인기 글

  • 태그

    클러스터
    인스타그램
    스프링 부트
    백준
    쿠버네티스
    spring boot
    리액트
    MSA
    REST API
    예외
    react
    OpenAI API
    스프링부트
    Entity
    chat GPT
    오블완
    mapstruct
    Java
    티스토리챌린지
    클론코딩
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
뚝딱뚝딱2
[Q. 12] 주식을 사고팔기 가장 좋은 시점
상단으로

티스토리툴바