일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 그래프 탐색
- 백준
- CSS
- 웹 프론트엔드
- 알고리즘
- 다이나믹 프로그래밍
- programmers
- 정렬
- JavaScript
- 파이썬
- BFS
- 브루트포스 알고리즘
- 그리디 알고리즘
- 프로그래머스
- 자료구조
- 그래프이론
- 문자열
- 프로그래머스스쿨
- 딕셔너리
- 자바스크립트
- web
- 스택
- 그래프 이론
- BASIC
- lv2
- level2
- DFS
- DP
- 구현
- 너비 우선 탐색
Archives
- Today
- Total
DevLog:-)
[프로그래머스][JavaScript]입국심사 본문
반응형
문제
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
function solution(n, times) {
var answer = 0;
return function solution(n, times) {
let left = 1;
let right = Math.max(...times) * n; // 이진 탐색의 시작과 끝 범위 설정
let answer = 0;
while (left <= right) {
const mid = Math.floor((left + right) / 2); // 중간값을 구함
let count = 0;
// 중간값(mid) 시간 동안 각 심사관이 몇 명을 처리할 수 있는지 계산
for (const time of times) {
count += Math.floor(mid / time);
}
// 처리한 사람 수(count)가 대기하는 사람 수(n)보다 작으면
// 시간을 늘려서 처리할 수 있는지 확인
if (count < n) {
left = mid + 1;
} else {
answer = mid;
right = mid - 1;
}
}
return answer;
}answer;
}
function solution(n, times) {
const sortedTimes = times.sort((a,b)=>a-b);
let left = 1;
let right = sortedTimes[sortedTimes.length - 1]*n;
while(left <= right) {
const mid = Math.floor((left + right)/2);
const sum = times.reduce((acc,time) => acc + Math.floor(mid/time),0);
if(sum < n){
left = mid + 1;
} else {
right = mid -1;
}
}
return left;
}
✅check point
Math.floor() | 작거나 같은 가장 큰 정수로 반환 (소수점 없애기) |
reduce((r,c,i)=>r+c,0) | r:누적값 c: 현재 요소 i: 현재 인덱스 ex) 배열의 각 요소에 대해 주어진 함수를 실행하고 하나의 값으로 축소 |
💡idea 요약
이분 탐색 | 숫자 큼 -> 로그시간으로 풀어야함 조건에 맞는 특정 값 찾기(파라메트릭 서치 parametric search) |
로직 | 중간값(mid)을 설정하고 이를 기준으로 대기 중인 사람 수를 계산하여 이동 범위를 조정하기 1. 초기화 : 최소 심사 시간(left), 최대 심사 시간(right)으로 초기화 2. 이분 탐색 : left가 right보다 작거나 같을 때까지 다음을 반복 - 중간값(mid) 시간 동안 각 심사관이 몇 명을 처리할 수 있는지(count) 계산 - 처리된 사람 수(count)가 대기하는 사람 수 n보다 작으면, 심사 시간을 더 늘려야 하므로 left를 mid + 1로 업데이트 - 그렇지 않으면 더 짧은 시간을 찾기 위해 right를 mid - 1로 업데이트 |
반응형
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스][JavaScript]N-Queen (0) | 2023.10.02 |
---|---|
[프로그래머스][JavaScript]베스트앨범 (0) | 2023.09.25 |
[프로그래머스][JavaScript]올바른 괄호 (1) | 2023.09.06 |
[프로그래머스][Javascript]구명보트 (0) | 2023.08.27 |
[프로그래머스][Javascript]카펫 (0) | 2023.08.21 |