✔ 입국심사 [백준 3079] 코드 구현하기 /* * 문제 분석하기 * : 전체 인원 입국에 걸리는 시간의 최소와 최대를 이진 탐색의 인덱스로 설정한 후 * 이진 탐색을 하며 시간 안에 모든 인원을 처리할 수 있는지 계산함 */ /* * 손으로 풀어보기 * 1. 이진탐색을 위해 데이터 정렬 * 2. 걸리는 시간의 최소와 최대 시간을 찾기 * 3. 이진 탐색을 하며 최소 시간을 찾기 * 4. 심사를 마치는데 걸리는 시간의 최솟값 출력하기 */ /* * 3079) 입국심사 */ public class Main { static BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); static int N; static long M; ..
✔ 인구 이동 [백준 16234] 코드 구현하기 /* * 문제 분석하기 * : BFS를 통해 이동하며 연합을 만든 후, 연합을 해지하는 것을 반복하며 인구 이동이 일어날 수 있을 때까지 이를 반복 */ /* * 손으로 풀어보기 * 1. BFS를 통해 이동하며 연합을 생성 * 2. 연합을 이루는 각 칸의 인구수를 조정 * 3. 더 이상 연합이 만들어지지 않을 때까지 반복 */ /* * 16234) 인구_이동 */ public class Main { static BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); static int N, L, R; static int[][] board; // board(나라 인구를 담은 배열) ..
✔ A와 B 2 [백준 12919] 코드 구현하기 /* * 문제 분석하기 * : T에서 두 조건에 따라 T를 변환해가며 S를 만들 수 있는지 확인함 */ /* * 손으로 풀어보기 * 1. 변환한 T의 마지막 글자가 A일 경우, 마지막 글자를 빼도록 함 * 2. 변환한 T의 첫 번째 글자가 B일 경우, 첫 번째 글자를 빼고 뒤집도록 함 * 3. 이를 반복해 변환한 T가 S의 길이와 같아졌을 때 동일한 글자인지 확인 * 4. S를 T로 만들 수 있다면 1, 없다면 0을 반환 */ /* * 12919) A와_B_2 */ public class Main { static BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); static..
✔ 토마토 [백준 7576] 코드 구현하기 /* * 문제 분석하기 * : 익은 토마토의 상하좌우를 탐색해 익지 않은 토마토가 있을 경우 익을 수 있도록 해줌 */ /* * 손으로 풀어보기 * 1. 익은 토마토의 상하좌우를 살펴보며 익지 않은 토마토가 있을 경우 익을 수 있도록 해줌 * 2. 토마토가 모두 익을 때까지의 최소 날짜를 출력 */ /* * 7576) 토마토 */ public class Main { static BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); static int M, N; static int[][] tomatoes; // tomatoes(토마토의 정보를 저장할 배열) static Queue que..
✔ 상어 초등학교 [백준 21608] 코드 구현하기 /* * 문제 분석하기 * : 좋아하는 학생에 따라 자리를 배치한 후, 학생의 만족도의 총 합을 출력함 */ /* * 손으로 풀어보기 * 1. 학생 정보 저장 * 2. 비어있는 칸 중에서 좋아하는 학생이 인접한 칸에 가장 많은 칸을 선택 * 3. 위를 만족하는 칸이 여러 개이면, 인접한 칸 중에서 비어있는 칸이 가장 많은 칸을 선택 * 4. 위를 만족하는 칸이 여러 개이면, 행의 번호가 가장 작은 칸을 선택 * 5. 위를 만족하는 칸이 여러 개이면, 열의 번호가 가장 작은 칸을 선택 * 6. 각 학생과 인접한 칸에 앉은 좋아하는 학생의 수를 구해 만족도를 구함 * 7. 학생의 만족도의 총 합을 출력 */ /* * 21608) 상어_초등학교 */ publ..
✔ 두 용액 [백준 2470] 코드 구현하기 /* * 문제 분석하기 * : 투 포인터를 이용해 두 용액을 혼합한 용액의 특성값 중 가장 0에 가까운 용액을 찾도록 함 */ /* * 손으로 풀어보기 * 1. 투 포인터를 이용해 두 용액을 혼합한 용액의 특성값을 찾음 * 2. 특성값 중 가장 0에 가까운 용액으로 갱신 * 3. 두 용액을 오름차순으로 출력 */ /* * 2470) 두_용액 */ public class Main { static BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); static int N; static int[] waters; // waters(용액들을 담은 배열) static int[] answer;..
✔ 동전 [백준 9084] 코드 구현하기 /* * 문제 분석하기 * : 주어진 금액을 만들기 위해 동전들을 조합해 만드는 방법을 모두 세도록 함 */ /* * 손으로 풀어보기 * 1. 1원부터 M원까지를 만들 때, 하나의 동전을 사용할 수 있는 경우와 여러 동전을 사용해야 하는 경우에 따른 경우의 수를 세도록 함 * 2. 금액 M을 만드는 모든 방법의 수를 출력 */ /* * 9084) 동전 */ public class Main { static BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); static int N, M; static int[] coins; // coins(동전들을 담은 배열) static int[] D;..
✔ 퇴사 2 [백준 15486] 코드 구현하기 /* * 문제 분석하기 * : 현재 상담을 했을 때 얻을 수 있는 수익과 현재 상담을 하지 않았을 경우에 얻을 수 있는 현재 상담의 종료일 시점의 상담 수익 중 더 큰 것을 찾도록 함 * 즉, 현재 상담을 할 것인지, 하지 않을 것인지에 따라 각 일자의 최대 상담 수익을 구하도록 함 */ /* * 손으로 풀어보기 * 1. 현재 상담을 했을 경우, 얻을 수 있는 수익을 찾음 * 2. 현재 상담을 하지 않았을 경우에 얻을 수 있는 현재 상담의 종료일 시점의 상담 수익을 찾음 * 3. 더 큰 수익으로 갱신해가며 가장 큰 상담 수익을 찾도록 함 * 4. 최대 이익을 출력하기 */ /* * 15486) 퇴사_2 */ public class Main { static B..