티스토리 뷰
programmers.co.kr/learn/courses/30/lessons/42584
첫 번째 풀이
for 문으로 리스트를 순회하면서 주식값이 떨어졌는지 안떨어졌는지 체크해가며 연속으로 떨어진 시간을 구해줬다.
케이스는 모두 통과했지만 효율성에서 개박살나버림 ㅋㅋ
주먹구구식으로 구현하다보니 효율성을 전혀 생각하지 못했다.
구현은 됐고 조금만 손보면 될거같아서 조금만 수정해보기로함
두 번째 풀이(성공)
이중 for문을 써서 구현완료
전 코드는 쓸데없이 코드를 순회할 때 마다 리스트를 슬라이스한 후에 길이를 구해주려고 해서 너무 비효율적이었다.
그냥 리스트 길이를 처음에 len(prices)로 구한후에 for문 내에서 해당 숫자만 불러와서 연산하게했더니 훨씬 나아졌다.
하지만 여전히 효율성이 좋다고 말하기엔 너무 느렸다.
그래서 큐/스택 문제의 취지에 맞게 deque를 이용해서 구현한 정답을 찾아보았다.
deque 자료형을 이용함으로서 맨앞의 인덱스를 더욱 효율적으로 이용하는 코드를 만들수 있었다.
deque의 popleft()를 이용하면 맨앞의 원소를 지우면서 값을 이용할 수 있어서 내가 짠 코드보다 훨씬 효율적으로 연산이 가능하다. while문의 조건을 prices로 하는 형태는 처음봤는데 정말 유용한 것 같다.
while문을 돌면서 하나씩 popleft()를 하다보면 결국 deque 리스트가 비게되는데 그때 리스트의 boolean 값이 False를 리턴하므로 while문이 알아서 종료된다.
deque의 장점에 관해서는 이전에 포스팅한적이 있는데, deque는 일반 list와는 다르게 맨앞과 맨뒤의 시간복잡도가 낮아 최고의 효율을 보여준다.
훨씬 간단하면서도 효율적인 코드를 쉽게 구현할 수 있다는것에 자료형 활용법의 중요도를 또다시 깨닫게 됐다.
'Python > python 코딩테스트' 카테고리의 다른 글
[Python] 프로그래머스 코딩테스트 다리를 지나는 트럭 (0) | 2020.09.28 |
---|---|
[Python]프로그래머스 코딩테스트 기능개발 (0) | 2020.09.25 |
[Python]프로그래머스 코딩테스트연습 베스트앨범 (0) | 2020.09.24 |
[Python]프로그래머스 코딩테스트연습 디스크 컨트롤러 (0) | 2020.09.22 |
[Python]프로그래머스 코딩테스트연습 더 맵게 (0) | 2020.09.21 |
- Total
- Today
- Yesterday
- heap max
- 배열 특정객체 제거
- 윈도우 chmod
- 배열 특정요소 제거
- Vue.js 프로젝트 투입 일주일 전
- Vue.js
- Vue.js 입문
- 프로그래머스
- vue.js 특징
- 코딩테스트
- chmod 400
- JavaScript
- vue bootstrap scss
- Vue.js강의
- 프로그래머스 코딩테스트
- 부트스트랩 커스텀
- dict 연속성
- Vue.js 책
- javascript 객체배열
- MySQL 문제
- bootstrap5
- 다리위를지나는트럭
- 데이터 사이언스 프로그래밍 파이썬
- 파이썬
- windows10 chmod 400
- 입문
- Java수료
- vue.js 개념
- Python
- 코드잇 강의
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |