알고리즘/백준 풀이(동적 프로그래밍)
백준 2839번 - 설탕 배달
공부 기록장
2023. 12. 30. 21:32
https://www.acmicpc.net/problem/2839
2839번: 설탕 배달
상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그
www.acmicpc.net
이 문제 또한 특정 패턴이 있다.
먼저 N은 3보다 크거나 같기 때문에 1,2 는 제외하고 보면 4와 7의 경우는 3과 5로 만들 수 없기 때문에 -1로 고정한다.
if(N==4||N==7)
{
System.out.println(-1);
}
그리고 5로 나누어 떨어지는 수는 5로 나눈 값을 출력하고 있다. 따라서 다음 코드와 같다.
else if(N%5==0)
{
System.out.println(N/5);
}
오른쪽 끝에 있는 수는 5로 나누었을 때의 나머지이다.
5로 나누었을 때 나머지가 1, 3이 나오는 수들은 동일한 형태의 수를 출력하면서 증가하고 있다.
5로 나누었을 때 나머지가 2, 4가 나오는 수들 또한 동일한 형태의 수를 출력하면서 증가하고 있다.
나머지가 1, 3 인 수들은 N/5 +1 을 한 값이 출력되고
나머지가 2, 4 인 수들은 N/5 +2 을 한 값이 출력된다.
따라서 코드는 다음과 같다.
else if(N%5==1||N%5==3)
{
System.out.println((N/5)+1);
}
else if(N%5==2||N%5==4)
{
System.out.println((N/5)+2);
}
코드
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
if(N==4||N==7)
{
System.out.println(-1);
}
else if(N%5==0)
{
System.out.println(N/5);
}
else if(N%5==1||N%5==3)
{
System.out.println((N/5)+1);
}
else if(N%5==2||N%5==4)
{
System.out.println((N/5)+2);
}
}
}