https://leetcode.com/problems/put-marbles-in-bags
새로운 사이트를 알게 되었다.
다만 사이트가 영어였는데...
영어에 아주 취약한 나로서는 문제 해석 조차 제대로 하지 못했다.
영어공부의 부족을 아주 많이 느낀 날이다
또한 문제 이해도 제대로 하지 못하고 풀이도 제대로 내놓지 못했다.
index 0, n n+1, length 이런식으로 들어 갈 것이라고는 알았지만
다 넣은 다음에 숫자의 크기에 따라 정렬해서 꺼내올 생각은 하지 못하고
dfs 로 경우의 수를 다뽑은 다음에
계산을 하였는데 long 범위를 벗어 난 것들이 많아 구현하지 못했다.
앞으로는 이런 방식 풀이를 외어서 같은 문제 정도 라도 적용해서 풀고 싶다.
<정답>
import java.util.ArrayList;
import java.util.Collections;
public class Solution {
public long putMarbles(int[] weights, int k) {
ArrayList<Integer> A = new ArrayList<>(); // weights[i] + weights[i + 1]의 합을 저장할 리스트
long min = 0;
long max = 0;
// 인접한 원소의 합을 A 리스트에 추가
for (int i = 0; i + 1 < weights.length; i++) {
A.add(weights[i] + weights[i + 1]);
}
// A 리스트를 정렬
Collections.sort(A);
// 최소 비용과 최대 비용 계산
for (int i = 0; i < k - 1; i++) {
min += A.get(i);
max += A.get(A.size() - 1 - i);
}
// 최대 비용과 최소 비용의 차이 반환
return max - min;
}
}
'알고리즘 > java' 카테고리의 다른 글
<java> 모음사전, TreeSet (0) | 2024.05.28 |
---|---|
<java> Orderly Queue (0) | 2024.05.27 |
<java> 프로그래머스 디스크 컨트롤러 : 우선순위 큐 (0) | 2024.05.24 |
<java> 프로그래머스 주식가격 (0) | 2024.05.23 |
<java> 프로그래머스 다리를 지나는 트럭 - 자료 구조 Deque (0) | 2024.05.22 |