일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- min heap
- 부등호
- 가독성
- 코딩테스트
- max-heap
- boolean
- deque
- 프로그래머스
- 임시 변수
- 대소 비교
- John Sonmez
- 스택/큐
- 그리디
- permutations
- 중첩
- ZIP
- 중간 변수
- 매직 넘버
- 파이썬
- 조합
- 커리어
- 함수화
- enumerate
- 탈출 조건
- 가이드
- 함수
- 힙
- 변수명
- 중첩문
- 2020 채용
- Today
- Total
목록Coding Test/Programmers (23)
Better Code, Better Life

문제 풀이 시험 문제는 최대 10000 문제입니다. 10000번째까지 수포자들의 답안을 작성합니다. 그리고 이 답안들을 정답과 비교하면 됩니다. 비교해서 맞춘 문제 갯수를 셉니다. 마지막으로 가장 높은 점수를 구해, 이 점수에 해당하는 수포자들의 번호를 기록합니다. 클린 코드 작성법 상수나 정해진 것은 위에 작성합니다. MAX_PROBLEM_NUM PARTICIPANT_ONE_PATTERN ... 임시 변수에 적절한 변수명을 붙여 해결하고자 하는 문제의 이해를 높입니다. for response, answer in zip(participant_response, answers) 문에서 두가지 임시 변수: response, answer 해답 코드 MAX_PROBLEM_NUM = 10000 PARTICIPANT..

문제 풀이 빈 큐를 만듭니다. 그리고 동작들을 차례차례 수행합니다. 이 때 max를 구하는 경우 linear하게 구하고 min을 구하는 경우 heap 구조(log n)를 이용합니다. 이 문제는 min 구할 때 heap 구조 없이 해도 풀리네요... 클린 코드 작성법 매직 넘버의 경우, 적절한 상수명을 붙여 관리합니다. MAX_KEY MIN_KEY operations 같은 경우, 여러 동작으로 나누어집니다. 이를 각각 관리해줍니다. process 리스트가 비어있는지 확인할 때 함수를 통해 가독성을 높여줍니다. is_empty 해답 코드 import heapq MAX_KEY = 1 MIN_KEY = -1 def solution(operations): number_list = [] for operation i..

문제 풀이 라면 공장과 유사한 문제 같습니다. 라면 공장에서는 기준점보다 커야만 밀가루를 공급받을 수 있습니다. 디스크 컨트롤러에서는 요청 시간이 현재 시간 이전이어야 작업을 수행할 수 있습니다. 풀이 과정 먼저 min heap을 만들어 줍니다. 이 때 heapq 를 이용하기 위해 자료를 가공해줍니다. swap_index heapq.heapify 작업을 모두 처리할 때까지 아래를 반복합니다. 처리할 수 있는 작업을 찾습니다. 만약 찾지 못하면 기다립니다. get_job get_minimal_wait_time 평균 대기 시간을 구합니다. 클린 코드 작성법 문제를 해결하기 위한 중간 변수를 만듭니다. 이 때 문제를 잘 이해할 수 있게 변수명을 지어줍니다. current_time total_wait_t..

문제 풀이 최대한 밀가루를 많이 공급해주는 해외 공장을 찾아야 합니다. 하지만 그 날까지 밀가루가 충분히 있어야 합니다. 버틸 수 있는 날 중에서 위 조건의 해외 공장을 찾아줍시다. 위 과정을 목표 수량에 달성할 때까지 반복합니다. 위 조건의 해외 공장을 찾으려면 max-heap 구조를 이용해야 합니다. 파이썬의 heapq 모듈은 기본적으로 min-heap이기 때문에 자료 값에 -1를 곱해주면 max-heap처럼 다룰 수 있습니다. 이후 최소값을 뽑으면 사실상 최대값이 뽑힙니다. 자료를 직접 다룰 때는 다시 -1를 곱해줍니다. ... supplies = flip(supplies) ... supply = supply_info[0]*(-1) 파이썬 heapq 모듈의 사용법은 help 키워드나 여기 링크를 참..

문제 풀이 제일 안 매운 두 음식을 뽑아서 섞습니다. 이 프로세스를 모든 음식이 일정 기준(K)을 넘을 때까지 반복합니다. 만약 위의 방법이 실패하면 -1이 답입니다. 제일 안 매운 음식을 반복적으로 추출해야 하기 때문에 힙 구조를 이용해야 합니다. 학교에서는 주로 max-heap 을 배웠을텐데 여기서는 min 값을 지속적으로 이용해야 하기 때문에 min-heap을 이용합니다. 파이썬의 heapq 모듈은 기본적으로 min-heap입니다. 사용법은 help 키워드나 여기 링크를 참조하세요! 클린 코드 작성법 이번 문제는 클린 코드를 작성하기가 힘들었습니다. 실력자분이 나타나서 한 수 가르쳐줬으면 합니다. check_conditions을 통해 break를 하나만 씁니다. 탈출 조건이 하나여야 while문을 ..

문제 풀이 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 설명을..