_Han_
나의 개발 노트
_Han_
  • 분류 전체보기 (272)
    • 데이터 엔지니어링 (29)
    • 인프라 (3)
    • 추천시스템 (11)
    • 코딩테스트 (146)
    • 부트캠프 회고 (15)
    • 회고 (4)
    • 자격증 (1)
    • 파이썬 프로그래밍 (6)
    • 통계 (2)
    • Git (21)
    • 유니티2D (33)

최근 글

반응형
hELLO · Designed By 정상우.
_Han_

나의 개발 노트

[코딩테스트] 프로그래머스 주식가격 파이썬(Python)
코딩테스트

[코딩테스트] 프로그래머스 주식가격 파이썬(Python)

2023. 1. 25. 23:29
반응형

https://school.programmers.co.kr/learn/courses/30/lessons/42584

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

from collections import deque
def solution(prices):
    q = deque(prices)
    result = []
    while q:
        c = q.popleft()
        i = 1
        for p in q:
            if p < c:
                result.append(i)
                break
            i+=1
        else:
            result.append(len(q))
    return result

먼저 저는 collections 모듈의 deque자료구조를 이용하여 prices를 deque자료구조의 q로 바꾸었습니다.

 

q가 빌때까지 반복합니다.
먼저 q.popleft()를 하여 q의 가장 첫번째 요소인 c를 추출합니다.

  • c는 현재 시점의 가격을 의미합니다.

i = 1 로 시간에 해당하고 점점 증가합니다.

 

다음은 for문으로 나머지 q를 반복하면서
만약 현재시점의 가격(c) 보다 p의 값이 작다면 즉 주식가격이 떨어졌다면 시간(i)를 result에 저장하고
break를 사용하여 반복문을 빠져나옵니다.
만약 주식 가격이 떨어지지 않았다면 나머지 값들 중 가격이 떨어진 값이 있는지 확인해야 하기 때문에 나머지 요소를 확인합니다

  • 이때 i+=1로 시간을 증가시킵니다.

하지만 break에서 반복문을 빠져나오지 않고 모든 for문을 돌았다면 주식 가격이 끝까지 가격이 떨어지지 않았음을 의미합니다.
따라서 len(q)를 result에 저장합니다.

모든 시점의 주식 가격을 확인했다면 result를 반환해줍니다.

반응형

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

[코딩테스트] 프로그래머스 오픈채팅방 파이썬(Python)  (0) 2023.01.27
[코딩테스트] 프로그래머스 숫자 카드 나누기 파이썬(Python)  (0) 2023.01.26
[코딩테스트] 프로그래머스 대여 횟수가 많은 자동차들의 월별 대여 횟수 구하기 MySQL  (0) 2023.01.24
[코딩테스트] 프로그래머스 자동차 종류 별 특정 옵션이 포함된 자동차 수 구하기 MySQL  (0) 2023.01.22
[코딩테스트] 프로그래머스 자동차 대여 기록에서 장기/단기 대여 구분하기 MySQL  (1) 2023.01.21
    '코딩테스트' 카테고리의 다른 글
    • [코딩테스트] 프로그래머스 오픈채팅방 파이썬(Python)
    • [코딩테스트] 프로그래머스 숫자 카드 나누기 파이썬(Python)
    • [코딩테스트] 프로그래머스 대여 횟수가 많은 자동차들의 월별 대여 횟수 구하기 MySQL
    • [코딩테스트] 프로그래머스 자동차 종류 별 특정 옵션이 포함된 자동차 수 구하기 MySQL
    _Han_
    _Han_
    학습한 것을 기록합니다.

    티스토리툴바