1일 1백준 7일차, 오늘 푼 문제는 2839번 문제인 "설탕 배달"이다.
https://www.acmicpc.net/problem/2839
겉보기에는 아주아주 쉬웠던 문제.
나머지 연산자와 몫 연산자만 가지고 1분컷 낼 수 있을 줄 알았지만 어림도 없었다.
결국 for문을 선택했다.
3키로 봉지와 5키로 봉지로 N킬로그램을 만든다는 게 무슨 의미일까?
3의 배수의 합과 5의 배수의 합으로 N을 만든다는 뜻이다.
즉 중첩 for문을 통해 3의 배수와 5의 배수를 더하고, 그 값이 N과 일치한다면 if문 안으로 들어가게 하면 된다.
if문 안에서는 기존의 k,i값의 합보다 지금의 k,i 값의 합이 더 적을 경우 k,i값을 갱신하는 작업을 한다.
그리고 k,i의 값이 존재한다는 것은 봉지의 개수가 몇 개이든 간에 N을 만들 수 있다는 뜻이므로 -1을 출력하면 안 되게 되는 것이고, 이 부분을 flag 불린값으로 표현했다.
아래로 내리면 정답 코드가 나옵니다. 문제를 아직 풀지 않으신 분들은 주의해주세요.
코드를 보시고 이해가 안 가시는 게 있다면 댓글로 질문 남겨주세요.
import java.util.Scanner;
public class pro2839 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int a = 9999999;
int b = 9999999;
boolean flag = false;
for (int k = 0; k < n / 3 + 1; k++) {
for (int i = 0; i < n / 5 + 1; i++) {
if (3 * k + 5 * i == n) {
flag = true;
if (k + i < a + b) {
a = k;
b = i;
}
}
}
}
if (flag == false) {
System.out.println(-1);
} else {
System.out.println(a + b);
}
}
}
'1일 1백준' 카테고리의 다른 글
1일 1백준 : 10757 큰 수 A + B (0) | 2022.06.18 |
---|---|
1일 1백준 : 10250번 ACM호텔 (0) | 2022.06.17 |
1일 1백준 : 2869번 달팽이는 올라가고 싶다 (0) | 2022.06.16 |
1일 1백준 : 1193번 분수찾기 (0) | 2022.06.16 |
1일 1백준 : 2292번 벌집 (0) | 2022.06.14 |