코딩테스트 준비
프로그래머스(이진탐색) 입국심사 문제 with Python
Grey Kang
2021. 2. 23. 01:13
반응형
이진탐색 기본 프로세스
left,right로 결과값에 대한 최소값과 최대값을 변수로 두고
반복(보통 while)구문을 통하여 left,right에 대한 mid 중간값을 구하고
mid값과 target값의 일치 여부를 확인하여
결과값을 도출해낸다.
해당 문제는 문제를 잘 이해하고 한 가지 부분만 캐치해내면 쉽게 풀어낼 수 있는 문제이다.
이 문제의 핵심은 심사대에 있는 심사위원들이 정해진 시간마다 심사를 수행할 수 있다는 것이고,
이 말은 즉 해당 시간대의 배수의 시간이 되면 +1씩 사람이 증가할 수 있다는 부분이다.
이 부분만 알아낸다면 바로 이진탐색 알고리즘에 적용하여 문제를 풀 수 있다.
위와 같이 기존 이진탐색 알고리즘과 동일하게 left,right라는 변수값을 두고,
최소,최대값을 설정하고 해당 기준의 mid값을 정하고 for문에서와 같이
해당 시간대로 나눈 몫이 결국에는 해당 구역에서 심사받을 수 있는 사람의 수가 된다.
이를 모두 더하게 되면 이 값을 target인 n과 비교하여 존재하는 경우,
해당값을 answer값으로 두고 while문을 반복해준다.
이후, left,right 조건에 의하여 while문을 빠져나오고 결과값이 도출되게 된다
반응형