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 | 29 | 30 |
Tags
- 미로 탈출 명령어
- 백준 c++ 9375번
- dp 알고리즘
- 2D슈팅게임
- 오브젝트 풀링
- Blend Type
- pccp 기출문제 1번
- Lv.3
- 충돌위험 찾기
- Hp바
- Lv2
- Unity
- 유니티
- 프로그래머스
- 플레이어 방향전환
- 9375번
- pccp 기출문제 3번
- dfs
- LayerMark
- CSharp #자료구조
- Animation State Machine
- pccp 기출문제 2번
- heap tree
- Back Tracking
- C#
- 연속 펄스 부분 수열의 합
- Algorithm
- Ainimation Blending
- 플레이어 이동
- 양과 늑대
Archives
- Today
- Total
주녘공부일지
[프로그래머스 C#] Lv.3 입국심사 본문
https://school.programmers.co.kr/learn/courses/30/lessons/43238
1. 정답코드 및 핵심 아이디어, 유의사항
주어진 조건에 따라 모든 대기 인원의 입국심사를 끝내는 최소 시간을 구하는 문제
- 기다리는 사람의 범위가 10억까지 주어지는 문제이므로 최적화가 필수적이며 기다리는 사람을 기준으로 무언가를 연산하기엔 굉장히 불리함
- 심사관은 10만명 이하로 비교적 범위가 좁기 때문에 어떤 시간안에 기다리는 모든 사람의 심사가 가능한지 여부를 판단하며 시간을 기준으로 잡아 연산하는 것이 유리함
즉, 최소 값과 최대 값을 산정해 중간 값을 이용해 탐색을 최소화하며 최소 시간을 구함
- 중간 값이 모든 사람의 심사가 불가능 : 중간 값을 올려서 만족하는 값을 찾아야 함
- 중간 값이 모든 사람의 심사가 가능 : 중간 값을 내려서 최소 값을 찾아야 함
주석 참조
using System;
public class Solution
{
public long solution(int n, int[] times)
{
long answer = 0;
var longArray = new long[times.Length]; // (long)times[]
// 오름차순 정렬해서 세팅
Array.Sort(times);
for (int i = 0; i < times.Length; i++)
longArray[i] = (long)times[i];
// 이분탐색 기준 세팅
long minTime = 1;
long maxTime = (long)n * longArray[longArray.Length - 1];
answer = long.MaxValue;
while (minTime <= maxTime)
{
// 중간 값 산출 (이분탐색)
long midTime = (minTime + maxTime) / 2;
// 현재 midTime을 기준으로 입국심사를 끝낼 수 있는지 체크
long count = 0;
foreach (long num in longArray)
count += midTime / num;
if (count >= n)
{
// 모든 사람을 입국심사 가능한 시간
maxTime = midTime - 1;
answer = Math.Min(answer, midTime);
}
else // count < n
{
// 모든 사람을 입국심사 불가능한 시간
minTime = midTime + 1;
}
}
return answer;
}
}
'CodingTest > Programmers Lv.3' 카테고리의 다른 글
[프로그래머스 C#] Lv.3 이중우선순위큐 (0) | 2024.02.05 |
---|---|
[프로그래머스 C#] Lv.3 인사고과 (0) | 2024.01.31 |
[프로그래머스 C#] Lv.3 다단계 칫솔 판매 (1) | 2024.01.25 |
[프로그래머스 C#] Lv.3 가장 긴 팰린드롬 (0) | 2024.01.24 |
[프로그래머스 C#] Lv.3 스티커 모으기(2) (1) | 2024.01.04 |