미소를뿌리는감자의 코딩
[백준 2024/01/15] 2839번 본문
오늘은 알고리즘(자바) 개강 날인데,
내가 하려고 했던 백준 풀기를 main으로 진행하는 것 같다.
아주.. 아다리가 잘 맞았다.. ㅎㅎㅎ
https://www.acmicpc.net/problem/2839
2839번: 설탕 배달
상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그
www.acmicpc.net
1) 접근 방법
우선 N = 3*x + 5*y 라는 식을 세웠다.
이후, y를 기준으로 중첩된 리스트를 구성할 것을 생각하였다.
y를 기준으로 삼은 것은, y가 최대인 값을 구해야하기 때문에, 정렬할 때 더 편리하게 하기 위함이다.
y를 기준으로 0~ N//5 까지 for 반복문을 생성하였다.
반복문 안에서는 if, else 문을 이용하여
x = (N-5*y)/3의 값이 실수 인지, 정수 인지에 따라 list에 넣을지 말지를 정해주었다.
실수의 경우 -> 봉지의 개수는 정수여야하므로 해당되지 않는다.
[[y,x],[y',x'],[y'',x'']] 이런식으로 식을 구성해 나갔다.
후보들이 전체 List에 들어가게 된 후,
전체 리스트를 정렬한 후, reverse()를 통해
y기준으로 내림차순으로 정렬될 수 있도록 하였다.
이후,
list[0][0] + list[0][1] 을 통해 총 봉지의 개수를 계산 해 주었다.
2) 코드
import java.util.Scanner;
import java.util.ArrayList;
import java.util.List;
import java.util.Comparator;
import java.util.Collections;
//TIP To <b>Run</b> code, press <shortcut actionId="Run"/> or
// click the <icon src="AllIcons.Actions.Execute"/> icon in the gutter.
public class b2839 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String N = scanner.nextLine();
int number = Integer.parseInt(N);
int quotient = number/5;
List<List<Integer>> total_list = new ArrayList<>();
for (int i = 0; i <= quotient; i++) {
int x = (number-(5*i))%3;
if( x==0 ){
int xx = (number-(5*i))/3;
List<Integer> sub_list = new ArrayList<>();
//sub_list.clear();
sub_list.add(i);
sub_list.add(xx);
total_list.add(sub_list);
//System.out.println(total_list);
}
else{
continue;
}
}
if (total_list.isEmpty()){
System.out.println(-1);
}
else{
Collections.sort(total_list, Comparator.comparing((List<Integer> list) -> list.get(0)).reversed());
int answer = total_list.get(0).get(0) + total_list.get(0).get(1);
System.out.println(answer);
}
}
}
코드 중에서 더 인상적인 부분은 다음과 같았다.
Collections.sort(total_list, Comparator.comparing((List<Integer> list) -> list.get(0)).reversed());
int answer = total_list.get(0).get(0) + total_list.get(0).get(1);
list.get(0)의 경우 0 번째 index를 기준으로 정렬하겠다는 것을 의미한다.
'코딩 테스트 > 백준' 카테고리의 다른 글
[백준 2024/01/16] 10250번 (0) | 2024.01.16 |
---|---|
[백준 2024/01/15] 2869번 (0) | 2024.01.15 |
[백준 2024/01/15] 4948번 (0) | 2024.01.15 |
[백준 2024/01/15] 2675번 (1) | 2024.01.15 |
[백준 2024/01/15] 시노시작! (0) | 2024.01.15 |