Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 개발자 취업
- 프로그래머스
- 인프콘 2024
- 코딩테스트 준비
- 1주일회고
- 빈 조회 2개 이상
- 99클럽
- 디자인 패턴
- 취업리부트코스
- infcon 2024
- 단기개발자코스
- jwttoken
- 프로그래머스 이중우선순위큐
- 빈 충돌
- 구글 OAuth login
- Spring multimodule
- @FeignClient
- 항해99
- DesignPattern
- 전략패턴 #StrategyPattern #디자인패턴
- spring batch 5.0
- KPT회고
- 개발자부트캠프추천
- Python
- jwt
- 커스텀 헤더
- JavaScript
- TiL
- 파이썬
- 디자인패턴
Archives
- Today
- Total
m1ndy5's coding blog
프로그래머스 입국심사 with Python 본문
https://school.programmers.co.kr/learn/courses/30/lessons/43238
def solution(n, times):
answer = 0
# 최대 시간
max_times = n * max(times)
s, e, m = 1, max_times, 0
while s <= e:
m = (s+e)//2
# 심사 가능 명수
cnt = 0
for t in times:
cnt += m//t
if cnt < n:
s = m + 1
else:
answer = m
e = m - 1
return answer
이 문제를 처음보고 했던 생각은 심사위원 한명한명 로테이션을 돌리는 방법이 아닌 뭔가 다른 방법이 있을 것 같다 라고 생각했다.
일단 최대로 걸릴 것 같은 시간을 구한뒤 (기다리는 사람 * 제일 긴 심사 시간) 그 시간을 좁혀보자가 아이디어였다.
예를 들어 30분이 정답이라고 놓고 보면
7분 심사위원은 4명을, 10분 심사위원은 3명을 심사할 것이다. (비동기로 진행하기 때문에)
그럼 총 30분이면 7명을 심사할 수 있는 것이다.
이러한 느낌으로 이분탐색을 사용하여 최적의 시간을 찾아갔다.
여기서 가장 중요한 포인트는 어 6명 심사 가능이네? 정답이다! 가 아닌
6명 가능이지만 가능한 시간중에서도 가장 짧은 시간을 구해야한다는 것이다.
그래서 6명이 가능일 때도 일단 answer에 저장을 하고 계속 해서 이분탐색을 이어나가고 s가 e를 이기는 순간이 오면 종료한다.
이 때 저장된 값이 가장 짧은 시간일 것이다!
'알고리즘 with python > 20240909' 카테고리의 다른 글
LeetCode 64. Minimum Path Sum with Python (0) | 2024.10.11 |
---|---|
프로그래머스 최소직사각형 with Python (1) | 2024.09.13 |
프로그래머스 K번째수 with Python (0) | 2024.09.12 |
프로그래머스 같은 숫자는 싫어 with Python (0) | 2024.09.11 |
프로그래머스 완주하지 못한 선수 with Python (0) | 2024.09.10 |