본문 바로가기

Problem solving/Programmers6

[Programmers] 징검다리 (C++) 문제 출발지점부터 distance만큼 떨어진 곳에 도착지점이 있음 rocks배열 중 n개를 제거했을 때 각 지점 사이 거리의 최솟값 중 가장 큰 값은? 생각할 것 mid : 각 지점 사이의 최대 거리를 의미 가장 가까운 돌과의 거리를 mid와 비교하고 더 작으면 돌을 빼준다. 돌을 뺀 갯수가 빼야하는 개수보다 크면 목표 거리를 줄임 돌을 뺀 갯수가 뺴야하는 개수보다 작으면 돌을 더 놓을 수 있으므로 목표 거리를 늘림 코드 #include #include #include using namespace std; int solution(int distance, vector rocks, int n) { vector r(rocks.size(), true); int answer = 0; int left = 0; in.. 2023. 7. 4.
[Programmers] 입국심사 (C++) 문제 n명이 줄을 서 있다. 각 입국 심사대마다 소요되는 시간은 다르다. 한 심사대는 한 명만 심사할 수 있다. 모든 사람이 심사 받는데 걸리는 시간의 최솟값 구하기 생각할 것 가장 먼저 심사시간 정렬하기 심사시간의 범위 : 1 ~ 가장 오래걸리는 사람 * 모든 사람 수 mid 시간 동안 심사할 수 있는 사람의 수를 찾기! 반례 입력값 〉 1000000000, [1, 1000000000] 기댓값 〉 1000000000 틀렸던 이유 : 자료형의 범위 때문에 while문이 실행되지 않았다. 잘못된 코드 long long end = times[times.size() - 1] * n; 고친 코드 long long end = (long long)times[times.size() - 1] * n; 코드 #inclu.. 2023. 7. 4.