[백준]2839_설탕 배달
다시 알고리즘 공부를 꾸준히 하기 위해 이전에 틀렸던 문제를 보았다.
다시 풀려고 노력했지만 여전히 어렵게 느껴졌다...
이 문제 같은 경우는 "입력된 N의 값이 5*X + 3*Y 와 같은 형태" 로 구성되는지 확인하면 되는 문제이다.
그리고 X+Y를 Return하면 문제는 쉽게 끝!!
코드를 보도록 하자.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Al2839 {
public static void main(String[] args) throws NumberFormatException, IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
/* 5*X + 3*0 의 경우 */
if(N % 5 == 0){
System.out.println(N/5);
return;
}
/* 5*X + 3*Y 의 경우 */
else{
int val = N / 5;
for (int i = val; i > 0; i--) {
int temp = N - (5 * i);
if(temp % 3 == 0){
System.out.println(i + (temp/3));
return;
}
}
/* 5*0 + 3*Y 의 경우 */
if(N % 3 == 0){
System.out.println(N/3);
}
/* 불가능 */
else{
System.out.println("-1");
}
return;
}
}
}
문제에서는 "최소한의 설탕 봉지" 를 원하기 때문에 주어진 3과 5중 "5의 배수가 있는지 파악" 한다.
그리고 "N의 값이 5의 배수가 아닐 경우에는 5X+3Y의 형태" 를 띄는지 확인한다.
5X+3Y 는 N을 가능한 만큼의 5X의 값을 뺀 값이 3Y의 형태인지 판단한다.
그 이후에는 "3의 배수인지 확인" 하고, 그리고도 return 되지 않는 값은 3과 5로 만들 수 없는 수로 -1을 출력한다.
열심히 하자...!
'Algorithms' 카테고리의 다른 글
[백준_자료구조]9375_패션왕 신해빈 (0) | 2019.03.24 |
---|---|
[백준_DP]9095_1,2,3 더하기 (0) | 2019.02.23 |
[백준_DP]2747_피보나치 수 (0) | 2019.02.23 |
[백준_BFS]2178번_미로 탐색 (0) | 2019.01.05 |
[백준_Math]1978_소수 찾기(에라토스테네스의 체) (0) | 2018.12.08 |