Comparator 클래스를 상속하여 내림차순 하는 방법이나, Collections.reverseOrder()를 사용하는 방법은 Objective 타입의 배열 혹은 Primitive 타입의 Wrapper Class로 이루어진 배열을 정렬할 때만 사용할 수 있다. 따라서 Primitive 타입으로 이루어진 배열을 내림차순 정렬할 때는, 오름차순 정렬 후, 뒤집어서 내림차순 정렬한다. import java.util.*; public class Main { public static void main(String[] args) { ArrayList list = new ArrayList(); Collections.sort(list, Collections.reverseOrder()); int[] arr = new ..
https://www.acmicpc.net/problem/2629 2629번: 양팔저울 첫째 줄에는 추의 개수가 자연수로 주어진다. 추의 개수는 30 이하이다. 둘째 줄에는 추의 무게들이 자연수로 가벼운 것부터 차례로 주어진다. 같은 무게의 추가 여러 개 있을 수도 있다. 추의 무 www.acmicpc.net 예전에 dfs로 완전탐색 했을 때는 시간초과가 났던 문제인데 dp를 공부한 후 다시 푸니까 풀려서 기분이 좋다^^ ✔ 문제 조건 30개 이하의, N개의 추가 있으며, 각 추들의 무게는 500이하이다. 같은 무게의 추가 여러 개 있을 수 있다. 추의 무게를 담은 배열을 balls[N+1] 라고 한다면, N
https://www.acmicpc.net/problem/1238 1238번: 파티 첫째 줄에 N(1 ≤ N ≤ 1,000), M(1 ≤ M ≤ 10,000), X가 공백으로 구분되어 입력된다. 두 번째 줄부터 M+1번째 줄까지 i번째 도로의 시작점, 끝점, 그리고 이 도로를 지나는데 필요한 소요시간 Ti가 들어 www.acmicpc.net ✔ 문제 조건 N명의 학생(정점), M개의 단방향 도로(간선)이 있다. 학생들은 모두 X번째 마을까지 최단거리로 갔다가 돌아와야 한다. X번째 마을까지 갔다가 돌아오는 시간이 가장 긴 학생의 소요 시간을 출력한다. ✔ 접근 과정 이 문제는 두가지 거리들을 구해야한다. 1) 각 지점에서 X지점까지의 최단거리 2) X지점에서 각 지점까지의 최단거리 단방향 그래프이기 때문..

https://programmers.co.kr/learn/courses/30/lessons/1835 코딩테스트 연습 - 단체사진 찍기 단체사진 찍기 가을을 맞아 카카오프렌즈는 단체로 소풍을 떠났다. 즐거운 시간을 보내고 마지막에 단체사진을 찍기 위해 카메라 앞에 일렬로 나란히 섰다. 그런데 각자가 원하는 배치가 모두 programmers.co.kr ✔ 문제 조건 모든 친구를 조건에 맞추어서 줄 세워야 한다. 조건들은 data[] 배열의 원소들이다. 하나의 조건 data[i]에서 data[i].charAt(0) 과 data[i].charAt(2)는 조건 당사자들이다. data[i].charAt(3) 은 {=, }으로 각각 같음, 미만, 초과를 의미한다. data[i].charAt(4)는 조건 당사자들 사이..

https://www.acmicpc.net/problem/1932 1932번: 정수 삼각형 첫째 줄에 삼각형의 크기 n(1 ≤ n ≤ 500)이 주어지고, 둘째 줄부터 n+1번째 줄까지 정수 삼각형이 주어진다. www.acmicpc.net 그동안 제일 취약했던 DP문제들을 풀어볼 생각이다.. 이 문제에서는 맨 위층부터 시작해서 아래에 있는 수 중 하나를 택하며 아래층으로 내려올 때 1) 현재 수의 바로 밑에 있는 수 2) 대각선 오른쪽 아래에 있는 수 들 중에서만 택할 수 있다. 즉, arr[i][j]를 택할 수 있는 위치는 1) 바로 위의 수 2) 대각선 왼쪽 위에 있는 수들이다. 1), 2) 의 위치에서 더 큰 합을 가지는 경우를 택하여 arr[i][j]의 수를 더해주면 (i, j)번째의 최적의 합이..
https://programmers.co.kr/learn/courses/30/lessons/72414 코딩테스트 연습 - 광고 삽입 시간을 나타내는 HH, H1, H2의 범위는 00~99, 분을 나타내는 MM, M1, M2의 범위는 00~59, 초를 나타내는 SS, S1, S2의 범위는 00~59까지 사용됩니다. 잘못된 시각은 입력으로 주어지지 않습니다. (예: 04:60:24, 11 programmers.co.kr 10초짜리 동영상을 0초부터 봤다는 것은 10초에 동영상 끝난 것이다. 따라서 0초부터 9초 까지만 시청자 누적 수를 더해주어야 한다. 누적 합이 정수 범위를 넘어갈 수 있어 long으로 선언해야 한다. 큐로 투포인터를 실행한다. 코드 참조 : https://yjyoon-dev.github...

https://programmers.co.kr/learn/courses/30/lessons/72413 코딩테스트 연습 - 합승 택시 요금 6 4 6 2 [[4, 1, 10], [3, 5, 24], [5, 6, 2], [3, 1, 41], [5, 1, 24], [4, 6, 50], [2, 4, 66], [2, 3, 22], [1, 6, 25]] 82 7 3 4 1 [[5, 7, 9], [4, 6, 4], [3, 6, 1], [3, 2, 3], [2, 1, 6]] 14 6 4 5 6 [[2,6,6], [6,3,7], [4,6,7], [6,5,11], [2,5,12], [5,3,20], [2,4 programmers.co.kr ✔ 문제 조건 n개의 지점 (1번~n번) 간선은 두 지점 사이의 거리 (택시요금),..