https://www.acmicpc.net/problem/2839
2839번: 설탕 배달
상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그
www.acmicpc.net
문제
코드
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int count=0;
if(n<3 || n==4) {
System.out.println(-1); return;
}
int t;
if(n/5>0) {
t=n/5;
while(true) {
if ((n - t * 5) % 3 == 0) break;
t--;
if(t<0) {
System.out.println(-1); return;
}
}
n-=t * 5;
count+=t;
}
if (n/3>0) {
count+=n/3;
n%=3;
}
System.out.println(count);
}
}
해결방법
설탕을 나눌 수 있는 3가지 경우 5kg로만 배달, 5kg와 3kg로 배달, 3kg로만 배달을 고려하여 슈도코드를 작성하였다.
슈도코드
1. n값 입력받기
2. 만약 n이 3 미만이거나 n이 4일 경우 -1 출력 후 종료
3.만약 n이 5로 나누어질 때 (5kg로만 배달, 5kg와 3kg로 배달하는 경우를 계산, 3kg로만 배달하는 경우는 탈출 후 4번에서 계산가능)
// t = n을 5로 나눈 몫
1. 반복
1. 만약 n을 (t * 5)로 뺐을 때 3으로 바로 나눠 떨어진다면 탈출
2. 아니면 t--
3. 만약 3으로 한 번에 나눠지지 않는다면 출력 후 종료 (3으로 나눠떨어지면 t가 0일 때, 1번에서 탈출가능)
2. n - (t * 5)
3. count + (t)
4. 만약 n이 3으로 나누어질 때
1. count + (3으로 나눈 최댓값)
2. n%=3
5. count 출력
'알고리즘 > 백준' 카테고리의 다른 글
18870번 : 좌표 압축 (0) | 2022.07.27 |
---|---|
2012번 : 등수 매기기 (0) | 2022.07.26 |
18310번 : 안테나 (0) | 2022.07.23 |
10815번 : 숫자 카드 (0) | 2022.07.20 |
11497번 : 통나무 건너뛰기 (0) | 2022.07.20 |