새로운 블로그로 이전 작업을 진행하고 있어 포스트가 새로 작성되고 있지 않습니다.

빠른 시일 내에 새로운 블로그로 인사드리겠습니다.

새로운 블로그 : https://unho.vercel.app/

본문 바로가기
알고리즘 문제풀이/JavaScript

[프로그래머스] 입국심사

by 언호 2022. 5. 27.

📖 문제


🧑🏻‍💻 풀이 과정

1) 문제 접근 및 이해

특정 시간 내에 인원을 모두 심사가 가능한지 여부 판별을 위해 이분 탐색을 이용하였습니다.

 

시간을 기준으로 필요한 최소 시간과 최대 시간을 우선적으로 구한 이후, 최소 시간을 탐색했습니다.

중간 시간을 적용하여 n명 이상 심사가 가능하면, 더 적은 시간으로 가능한지 탐색하였습니다.

n명 심사가 불가능하다면, 더 많은 시간을 적용하여 탐색하였습니다.

2) 알고리즘

  • 이분탐색

3) 풀이 코드

사용 언어 - JavaScript

function solution(n, times) {
  let answer = 0                                        // 정답 변수
  let min_time = 1                                      // 심사를 모두 마치는 최소 시간
  let max_time = n * Math.max(...times)                 // 심사를 모두 마치는 최대 시간
  
  while (min_time <= max_time) {                        // 이분 탐색
    const mid = parseInt((min_time + max_time) / 2)     // 최소와 최대의 중간 값
    
    let people = 0                                      // 현재 시간에서 심사 가능한 인원
    times.forEach(t => people += parseInt(mid / t))     // 심사관별로 해당 시간에 심사 가능한 인원 누적
    
    if (people >= n) {      // n명 이상 심사 가능하면
      answer = mid          // 현재 시간 기록
      max_time = mid - 1    // 더 적은 시간으로 심사 가능한지 탐색
    } else {                // 모두 심사 불가능하면
      min_time = mid + 1    // 더 많은 시간으로 심사 가능한지 탐색
    }
  }

  return answer
}

🔗 문제 링크

- https://programmers.co.kr/learn/courses/30/lessons/43238?language=javascript 

 

코딩테스트 연습 - 입국심사

n명이 입국심사를 위해 줄을 서서 기다리고 있습니다. 각 입국심사대에 있는 심사관마다 심사하는데 걸리는 시간은 다릅니다. 처음에 모든 심사대는 비어있습니다. 한 심사대에서는 동시에 한

programmers.co.kr

 

 

※ 오류 및 오타, 다른 의견이 있는 경우 댓글을 남겨주시면 감사하겠습니다

댓글