본문 바로가기

Algorithm221

[백준] 3758: KCPC - JAVA https://www.acmicpc.net/problem/3758 풀이내 팀이 몇 등인지 구하는 문제이다. 점수가 동일한 팀이 있는 경우 다음 규칙에 따라 정해진다. 1. 최종 점수가 같은 경우, 풀이를 제출한 횟수가 적은 팀의 순위가 높다. 2. 최종 점수도 같고, 제출 횟수도 같은 경우, 마지막 제출 시간이 더 빠른 팀의 순위가 높다. 이 규칙들을 우선순위큐에 적용하여 점수, 횟수, 제출시간을 class에 넣고 우선순위큐에서 뽑으면서 rank를 메겼다.  메모리: 34920KB시간: 356ms언어: Java 11import java.util.*;import java.io.*;public class Main { static class Node implements Comparable { .. 2024. 5. 17.
[백준] 2607: 비슷한 단어 - JAVA https://www.acmicpc.net/problem/2607 풀이단어가 주어지고, 다음에 주어지는 단어들이 첫번째 단어와 비슷한 단어인지 체크하는 문제이다. 비슷한 단어란 다음과 같이 판별한다. 1. 길이가 같을 경우, 알파벳의 구성이 같다. 2. 길이가 다를 경우 알파벳 하나를 더하거나 빼서 같은 구성으로 만들 수 있다. 첫 번째 단어를 길이 26의 int배열로 받아 비교해주었다. 비교할 단어를 위의 int배열과 비교하여 구성이 같은지 판단하여 cnt라는 개수로 체크한다. 두 단어의 길이가 같을 경우 cnt가 첫 단어의 길이와 같거나 cnt가 첫 단어의 길이보다 1 작다면 만족한다. 비교하는 단어가 1만큼 작을 경우, 첫 단어에 존재하는 알파벳과 다른 알파벳을 가지고 있으면 안된다. 즉, cnt가.. 2024. 5. 17.
[백준] 17484: 진우의 달 여행 (Small) - JAVA https://www.acmicpc.net/problem/17484 풀이맨 위에서 맨 아래로 내려가야 한다. 아래로 내려갈 때는 5시, 6시, 7시 방향으로 내려갈 수 있다. 하지만 이전에 5시방향으로 내려왔다면 다시 5시방향으로 내려갈 수 없다. 다른 방향들도 같은 방식으로 진행한다. 따라서 dp배열을 삼차원 배열으로 만들어 방향까지 저장해주었다.  메모리: 14320KB시간: 124ms언어: Java 11import java.util.*;import java.io.*;public class Main { public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new I.. 2024. 5. 17.
[백준] 19941: 햄버거 분배 - JAVA https://www.acmicpc.net/problem/19941 풀이사람과 햄버거가 한칸씩 차지하고 나열되어있다. 사람들은 자신의 위치에서 거리가 K이하인 햄버거를 하나 먹는다. 사람을 앞에서부터 보면서 거리가 K이하인 것중에 위치가 가장 앞인거을 먹게한다. 앞사람에게 앞햄버거를 배정하는 것이 최선의 경우이다.  메모리: 14388KB시간: 136ms언어: Java 11import java.util.*;import java.io.*;public class Main { public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(Sys.. 2024. 5. 17.
[백준] 17266: 어두운 굴다리 - JAVA https://www.acmicpc.net/problem/17266 풀이가로등의 높이를 조정하여 길을 모두 비추도록 하는 문제였다. 따라서 가로등의 높이를 기준으로 이분탐색을 진행했다. 이분탐색의 mid값을 현재 체크할 높이로 하여 check메서드를 수행했고, 마지막 지점까지 비추는 것을 확인하기 위해 `return prev >= N` 으로 처리했다.  메모리: 25084KB시간: 316ms언어: Java 11import java.util.*;import java.io.*;public class Main { static int N, M; static int[] arr; public static void main(String[] args) throws Exception { Bu.. 2024. 5. 17.
[백준] 5638: 수문 - JAVA https://www.acmicpc.net/problem/5638 풀이수문의 유량과 비용이 주어지고 일정 시간 안에 일정 양을 비워야 하는 문제이다. 물 500을 30시간 안에 비우려면 유량 5, 비용 60인 수문을 29시간, 유량 13, 비용 50인 수문을 28시간 열어놓으면 되고, 비용은 110이 된다. 수문의 최대 개수가 20으로 주어져있어서 조합으로 만들어 체크하기로 했다. combination 메서드에 인자로 (수문의 유량 * 주어진 시간)을 더한값을 넘겨서 그 값이 목표 양보다 크면 비용을 비교해주었다. 문제 분류를 열어보니 dp가 써있었는데 이건 어떻게 해야할지 모르겠다...  메모리: 14464KB시간: 140ms언어: Java 11import java.util.*;import java.i.. 2024. 5. 17.
[백준] 25688: 빠른 무작위 숫자 탐색 - JAVA https://www.acmicpc.net/problem/25688 풀이1부터 6까지의 숫자를 모두 방문해야하는 문제였다. 비트연산을 이용해 방문한 숫자를 저장했다. 현재 마주친 숫자의 정보와 새로 만난 숫자를 or연산을 통해 하나라도 1이면 1로 되게 했다. 해당 정보를 들고 다음 칸으로 이동한다. 방문처리는 삼차원배열로하여 마주친 숫자까지 고려하여 처리했다. 메모리: 14236KB시간: 132ms언어: Java 11import java.util.*;import java.io.*;public class Main { static class Node { int r; int c; int move; int key; public Node(int.. 2024. 5. 17.
[백준] 9017: 크로스 컨트리 - JAVA https://www.acmicpc.net/problem/9017 풀이6명이 참여한 팀만 점수가 들어가며, 팀 당 상위 네명의 주자 합이 팀의 점수가 된다. 팀의 점수가 같을 경우 다섯번째 선수의 점수가 우승을 결정한다. 우선순위큐를 써야겠다고 생각이 들었다. 입력을 받으면서 팀 당 몇명인지 카운트를 해주었고, 6명인팀만 점수 계산을 하여 우선순위큐에 넣었다. 우선순위큐의 정렬 기준을 문제에 나와있는대로 적용했기때문에 우선순위큐에서 poll 하여 출력하면 된다.  메모리: 16448KB시간: 184ms언어: Java 11import java.util.*;import java.io.*;public class Main { static class Team implements Comparable { .. 2024. 5. 17.
[백준] 25708: 만남의 광장 - JAVA https://www.acmicpc.net/problem/25708 풀이길을 가로 2개, 세로 2개 만들어야 한다. 가로와 세로 각각 누적합을 만들어놓았다. 4중for문을 통해 up, down, left, right 를 탐색하여 구해놓은 누적합을 더해주고 겹치는 부분을 원 배열에서 찾아 빼주었다. 길로 둘러쌓인 부분의 개수를 더해야 하므로 `(down-up-1)\*(right-left-1)` 만큼 더해주었다.  메모리: 16892KB시간: 312ms언어: Java 11import java.util.*;import java.io.*;public class Main { public static void main(String[] args) throws Exception { BufferedRe.. 2024. 5. 17.
[백준] 2110: 공유기 설치 - JAVA https://www.acmicpc.net/problem/2110 풀이공유기를 C개 설치하면서 가장 인접한 두 공유기 사이의 거리를 최대ㅐ로 하는 문제이다. 공유기 사이의 거리를 기준으로 이분탐색을하여 풀었다. 이분탐색을 해야하므로 입력을 받아 배열을 정렬했다. left와 right를 놓고 mid를 공유기 사이의 거리로 하여 그 거리만큼 띄웠을 때 몇개의 공유기를 설치할 수 있는지 판단했다. 설치가능한 공유기의 개수가 c보다 작다면 right를 mid로 줄이고 그렇지 않다면 left를 mid+1 로 증가시켰다.  메모리: 28912KB시간: 312ms언어: Java 11import java.util.*;import java.io.*;public class Main { static int[] arr;.. 2024. 5. 17.