끄적끄적 코딩
article thumbnail
[Java] 프로그래머스 - 입국심사
알고리즘 2023. 8. 28. 14:55

이분탐색 문제입니다. n명의 친구들이 전부 심사대를 통과하는데 걸리는 시간을 구해야합니다. 심사대는 전부 시간이 다릅니다. 1. 시간을 구합니다. 2. 해당 시간으로 통과할 수 있는 사람들 수를 구합니다. 3-1. 사람들 수가 n보다 많거나 같다면 더 작은 경우가 있는지 확인합니다. => 1 3-2. 사람들 수가 n보다 적다면 불가능 한 경우로 가능한 경우가 있는지 확인합니다. => 1 위의 과정을 반복해서 최적의 결과값을 찾아냅니다. 해당 과정에서 시간을 구하는 과정은 이분탐색을 사용했습니다. class Solution { public long solution(int n, int[] times) { long answer = 1_000_000_000L * 1_000_000_000L; long start ..

article thumbnail
[Java] 프로그래머스 - 택배 배달과 수거하기
알고리즘 2023. 8. 28. 02:09

그리디 문제입니다. 택배 배달과 수거를 할 때 최소 시간을 구해야합니다. 뒤에서부터 최대한 많이 처리하면서 오면 결과를 도출할 수 있습니다. 뒤에서부터 처리해야할 택배와 수거해야할 상자가 있는지 확인합니다. 있는 경우 몇번을 움직여야하는지 계산하고 해당 위치에 대한 시간을 결과값에 넣어줍니다. 택배를 배달하거나 수거해야하는 경우 해당 개수만큼 delivery변수와 pickup변수에 빼줍니다. 두 변수가 다시 0보다 클 때 까지 cap을 더해줍니다. ( 몇번 반복해서 이동해야하는지 구하는 중) 전부 계산했다면 시간을 계산해서 결과값에 추가 위의 과정을 반복해주었습니다. class Solution { public long solution(int cap, int n, int[] deliveries, int[]..

article thumbnail
[Java] 백준 2617번 구슬 찾기
알고리즘 2023. 8. 27. 19:07

플로이드 문제입니다. 무게가 중간이 될 수 없는 구슬의 수를 출력해야합니다. 입력값으로 어떤 구슬보다 무거운지에 대한 정보가 나옵니다. 플로이드 워셜 알고리즘을 사용해서 무거운것과 가벼운 것에 대한 정보를 갱신합니다. 각 구슬에 중간보다 크거나 작으면 결과값에 1을 더해주었습니다. 계산된 결과값을 출력해주었습니다. import java.util.*; import java.io.*; public class Main { static BufferedReader br; static BufferedWriter bw; static StringTokenizer st; static int n; static int m; static int half; static int[][] arr; static int result =..

article thumbnail
[Java] 백준 1863번 스카이라인 쉬운거
알고리즘 2023. 8. 27. 17:01

스택문제입니다. 스카이라인을 통해서 빌딩의 최소 개수를 구해야합니다. 스택으로 높이에 대한 정보를 받고 더 작은 높이인경우 결과값을 +1 해주면서 pop을 합니다. 위의 과정을 반복해서 최종적으로 나온 결과를 출력해주었습니다. import java.util.*; import java.io.*; public class Main { static BufferedReader br; static BufferedWriter bw; static StringTokenizer st; static int n; static Stack stack; static int result = 0; public static void main(String[] args) throws Exception { simulation(); } pub..

article thumbnail
[Java] 백준 2792번 보석 상자
알고리즘 2023. 8. 23. 01:53

이분탐색 문제입니다. 모든 보석을 나누어 줄 때 최소 질투심의 값을 구해야합니다. 질투심은 가장 많은 보석을 가져간 학생이 가지고 있는 보석의 개수입니다. 보석의 개수로 이분탐색을 진행하고 보석이 해당 개수로 나누어 떨어지지 않으면 1을 추가합니다. for (int i = 0; i < m; ++i) { cnt += arr[i] / mid; if (arr[i] % mid != 0) { ++cnt; } } 위의 과정을 반복하여 최종적으로 left의 값을 출력해주었습니다. import java.util.*; import java.io.*; public class Main { static BufferedReader br; static BufferedWriter bw; static StringTokenizer s..

article thumbnail
[Java] 백준 25682번 체스판 다시 칠하기 2
알고리즘 2023. 8. 22. 10:25

누적합 문제입니다. 흑색부터 채우는 경우와 백색부터 채우는 경우에 대해서 누적합으로 구해줍니다. K크기의 값을 구한 누적합을 통해서 구할 수 있습니다. 흑색부터 채우는 경우와 백색부터 채우는 경우 중 작은 값을 결과값과 비교해줍니다. 결과값보다 작은경우 갱신하고 그렇지 않은 경우 다음 단계를 진행합니다. import java.util.*; import java.io.*; public class Main { static BufferedReader br; static BufferedWriter bw; static StringTokenizer st; static int n; static int m; static int k; static int[][] map; static int[][] calcMap1; sta..

article thumbnail
[Java] 프로그래머스 - 여행경로
알고리즘 2023. 8. 21. 03:11

DFS, BFS 문제입니다. 티켓이 주어지고 모든 도시를 방문할 때 경로를 출력해야합니다. 결과가 여러개라면 알파벳 순서가 앞서는 경로를 출력하면 됩니다. 불가능 한 경우는 없으며, 모든 티켓을 사용해야합니다. 27 * 27 * 27 = 19683이므로 19684크기의 배열을 만들어주었습니다. 문자를 해당 인덱스에 매핑시켜서 넣어주었습니다. 갈 수 있는 곳을 알파벳 순으로 정렬해주었습니다. 방문 배열을 만들어서 같은곳을 방문하지 않게 하여 최초 성공했을때를 출력해주었습니다. import java.util.*; class Solution { static ArrayList al; static boolean[][] visit; static int size; static ArrayList result; publ..

article thumbnail
[Java] 백준 3967번 매직스타
알고리즘 2023. 8. 20. 03:16

백트래킹 문제입니다. 각 직선의 합이 26이 나오는 경우를 만들어 출력해야합니다. 결과는 가능한 경우로 주어지며, 답이 여러 개일 경우 사전순으로 빠른 순으로 출력해야합니다. 각 직선은 총 6가지가 가능합니다. 숫자 12개의 크기를 가진 배열을 만들어주고, 순열을 통해서 값을 넣었습니다. 만든 후 가능한지 테스트하였습니다. 위의 과정을 반복해서 가능한 경우 출력해주고 종료해주었습니다. import java.io.*; import java.util.*; public class Main { static boolean suc = false; public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReade..

검색 태그