일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 가이드
- 가독성
- boolean
- 스택/큐
- permutations
- 커리어
- 힙
- 그리디
- 매직 넘버
- John Sonmez
- 임시 변수
- 변수명
- 함수
- 중첩
- deque
- min heap
- ZIP
- 코딩테스트
- enumerate
- 조합
- 함수화
- max-heap
- 파이썬
- 탈출 조건
- 부등호
- 프로그래머스
- 2020 채용
- 대소 비교
- 중간 변수
- 중첩문
- Today
- Total
목록deque (5)
Better Code, Better Life
문제 풀이 people을 가벼운 순으로 sort 합니다. 이후 제일 무거운 사람을 태운 후, 제일 가벼운 사람을 태울 수 있으면 태웁니다. 모든 사람들이 탈 때까지 2번의 로직을 반복합니다. list 자료형의 경우 0번째 index pop의 비용이 O(n)이므로 deque자료형을 이용합니다. 클린 코드 작성법 문제 이해를 위한 적절한 변수명을 짓습니다. capacity, heaviest_person, lightest_person if capacity_left_for_lightest_person(people, capacity) 처럼 함수을 이용해 가독성을 높일 수 있씁니다. if 다음에 boolean 값을 return 하는 함수를 작성합니다. 값의 비교시 작은 값은 왼쪽, 큰 값은 오른쪽에 놓습니다. li..

문제 풀이 prices의 왼쪽 price 부터 반복적으로 가격이 떨어지지 않은 기간을 구합니다. 적절히 get_non_decreasing_days 함수만을 구현하면 됩니다. deque 자료구조를 통해 첫 번째 원소를 추출해내는 작업을 수월하게 할 수 있습니다. 프린터 문제 해설 에서 deque 설명을 참조하세요! 클린 코드 작성법 함수의 이름으로 동사를 이용합니다. get_non_decreasing_days 변수명을 실제 문제와 대응되게 짓습니다. non_decreasing_days for 문에서의 임시 변수 또한 i, j 보다 반복 대상을 잘 나타낼 수 있는 이름을 짓습니다. other_price 해답 코드 from collections import deque def get_non_decreasing_..

문제 풀이 작업은 하루가 지나면 다 같이 업데이트 되고 100 이상이 되더라도 앞의 작업이 끝나지 않으면 배포가 되지 않습니다. 첫 번째 작업이 완료될 때까지 작업을 진행합니다. complete_first_progress 첫 번째 작업이 완료되면 첫번째부터 100 이상인 작업들을 배포합니다. update_progress_info 배포된 작업의 수를 저장합니다. complete_group_num.append(len(finished_progresses)) 작업이 모두 배포될 때까지 1~3을 반복합니다. update_progress_info에서 왼쪽 element를 반복적으로 빼야하기 때문에 list보다 deque를 이용합니다. deque 자료구조를 통해 첫 번째 원소를 추출해내는 작업을 수월하게 할 수 있습..

문제 풀이 트럭이 진입할 때 걸리는 시간, 나갈 때 걸리는 시간이 헷갈리는 문제입니다. 예시 1번을 보면 0 ~ 2초에 건널 것 같은 트럭이 0 ~ 1초에는 진입하고, 1 ~ 3초까지 건넙니다. 이 점을 이해하고 문제를 풀어봅시다. 1초 단위로 업데이트를 합니다. 다리에 있는 트럭들 위치를 1만큼 이동시킵니다. 위치가 0이 된 트럭은 제거해줍니다. 만약 1, 2번 단계 이후에 weight_capacity 여유가 있다면 추가 시켜줍니다. [truck_weight, bridge_length]로 추가시킵니다. 추후에 다리 끝에 도달 했을 때 제거된 트럭 무게를 구할 수 있게 됩니다. deque 자료구조를 통해 첫 번째 원소를 추출해내는 작업을 수월하게 할 수 있습니다. 프린터 문제 해설 에서 deque 설명을..

문제 풀이 먼저 기존의 인덱스가 몇번째 순서로 프린트 되는지 알아내야 하기 때문에 기존 인덱스를 묶어 저장합니다. 파이썬 리스트는 첫번째 원소를 빼낼 때(pop) 비용이 많이 듭니다. 따라서 이를 queue 자료 구조인 collections 의 deque를 이용합니다. 아래 링크를 보면 deque의 시간복잡도를 알 수 있습니다. 그 다음부터는 출력물이 어떤 순서로 뽑히는지 알아내는 로직을 세웁니다. 프린터 출력물 상단부터 제일 우선순위가 높은지 확인합니다. max_priority = get_max_priority(indexed_priority_deque) 맞으면 출력순서 리스트(print_order_list)에 저장합니다. 아니면 출력물 하단에 삽입합니다. 마지막으로 목표 출력물인 location이 몇 ..