https://www.acmicpc.net/problem/2839
- 코드 1
import java.util.Scanner;
public class Main {
static int N;
static int cnt, remain;
static void findCntMin() {
int max = N/5; // 쓸 수 있는 5kg 봉지의 최댓값
for (int i = max; i>=0; i--) {
remain = N;
remain -= 5*i;
cnt += i;
cnt += remain/3;
remain -= (remain/3)*3;
if (remain==0) break;
cnt = 0;
}
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// 입력
N = sc.nextInt();
// 최소 개수 찾기
findCntMin();
// 출력
if (remain == 0) System.out.println(cnt);
else System.out.println(-1);
sc.close();
}
}
- 풀이
N을 더 큰 봉지인 5으로 나눠서 5kg 봉지를 가장 많이 쓸 수 있는 개수를 찾는다. 그리고 최대 개수부터 1개씩 줄여나가며 나머지를 작은 봉지인 3kg 봉지로 담을 수 있는 지 확인한다.
- 코드 2
import java.util.Scanner;
public class B2839_설탕배달_길민지 {
static int N;
static int cnt, remain;
static void findCntMin() {
while(remain!=0) {
if (remain%5==0) {
cnt+=remain/5;
break;
}
else if (remain>=3) {
remain-=3;
cnt++;
}
else {
cnt = -1;
break;
}
}
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// 입력
N = sc.nextInt();
// 최소 개수 찾기
remain = N;
findCntMin();
// 출력
System.out.println(cnt);
sc.close();
}
}
- 풀이
남은 무게가 더 큰 봉지인 5kg으로 나눠 떨어진다면 5kg 봉지를 전부 사용한다. 만약 그렇지 않다면 작은 봉지인 3kg에 하나씩 담고 다시 3으로 나눠 떨어지는지 확인한다. 남은 무게가 3보다도 작다면 해결이 불가능하므로 -1이 된다.
'개발 > 코딩테스트' 카테고리의 다른 글
2019 카카오 개발자 겨울 인턴십 - 크레인 인형뽑기 게임 [JAVA] (0) | 2023.03.16 |
---|---|
백준 1931번: 회의실 배정 [JAVA] (0) | 2023.03.16 |
백준 11047번: 동전 0 [JAVA] (1) | 2023.03.16 |
백준 1182번: 부분수열의 합 [JAVA] (0) | 2023.03.15 |
백준 11725번: 트리의 부모 찾기 [JAVA] (0) | 2023.03.15 |
댓글