프로그래머스 입국심사, 사람배정이 아닌 시간을 이분 탐색하기이번에는 프로그래머스의 입국심사 문제를 풀어보았다.👉프로그래머스 입국심사 문제처음에는 꽤 어려웠다.문제를 읽었을 때 자연스럽게 이렇게 생각했다.각 사람을 어떤 심사관에게 배정해야 하지?더 빠른 심사관에게 먼저 보내야 하나?비어 있는 심사대가 있어도 기다렸다가 더 빨리 끝나는 심사대를 이용해야 하나?하지만 이 문제는 사람을 심사관에게 직접 배정하는 문제가 아니었다.핵심은 n명을 모두 심사할 수 있는 최소 시간을 구하는 것이었다.문제 설명입국심사를 기다리는 사람 수 n명이 있고, 각 심사관이 한 명을 심사하는 데 걸리는 시간이 times 배열로 주어진다.모든 사람이 심사를 받는 데 걸리는 최소 시간을 구해야 한다.예를 들어:n = 6;times =..
👉프로그래머스 체육복 문제문제 설명전체 학생 수 n명이 있고, 일부 학생은 체육복을 도난당했다.또 일부 학생은 여벌 체육복을 가지고 있다.체육복을 도난당한 학생은 바로 앞번호나 바로 뒷번호 학생에게만 체육복을 빌릴 수 있다.즉, i번 학생은 아래 학생에게만 빌릴 수 있다.i - 1번 학생i + 1번 학생체육복을 빌려줄 수 있는 학생은 여벌 체육복을 가진 학생뿐이고, 여벌 체육복은 한 벌만 빌려줄 수 있다.이때 체육 수업을 들을 수 있는 학생의 최댓값을 구해야 한다.문제 유형 분류이 문제는 그리디 문제이다.체육복을 도난당한 학생을 앞번호부터 확인하면서, 빌릴 수 있는 학생이 있으면 바로 빌리는 방식으로 접근할 수 있다.이 문제에서 중요한 점은 앞번호부터 차례대로 처리해야 한다는 것이다.예를 들어 도난당한..
등굣길 문제를 두 번째로 풀면서 DP 접근 자체는 맞게 잡았다.dp[y][x]에 시작점부터 (x, y)까지 이동하는 경우의 수를 저장하고, 위쪽과 왼쪽 값을 더하는 방식으로 구현했다.다만 처음 제출한 코드에서는 구현 과정에서 몇 가지를 놓쳤다. 👉등굣길 - 첫풀이(문제포함)1. 웅덩이 좌표 순서를 반대로 사용했다문제에서 puddles는 [x, y] 형태로 주어진다.하지만 DP 배열은 행, 열 순서로 사용했기 때문에 dp[y][x] 형태가 되어야 한다.처음에는 아래처럼 작성했다.dp[puddle[0]][puddle[1]] = -1;하지만 올바른 코드는 아래와 같다.dp[puddle[1]][puddle[0]] = -1;배열을 new int[n + 1][m + 1]로 만들었기 때문에,첫 번째 인덱스는 세로 ..
명이나물 라이브러리