상근이가 설탕을 배달하는 문제입니다.
최대한 5키로그램으로 채우고 나머지는 3키로로 채워주는데 정확하게 만들 수 없다면 -1을 리턴해야됩니다.
ex) 24kg = 3(3) + 5(3)
2kg = -1
자바
import java .util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
short N = s.nextShort();
int cnt=0;
if(N%5==0) System.out.println(N/5);
else if(N==4 || N==7){System.out.println(-1);}
else{
while(true){
N-=3;
cnt++;
if(N==0){System.out.println(cnt); break;}
if(N%5==0) {System.out.println(cnt+N/5);break;}
}
}
}
}
c언어
#include <stdio.h>
int main() {
int cnt = 0, N;
scanf("%d", &N);
if(N%5==0) printf("%d",N/5);
else{
while (1) {
N-=3;
cnt++;
if (N<0) {printf("-1");break;}
if(N==0){printf("%d",cnt); break;}
if(N%5==0) {printf("%d",cnt+N/5);break;}
}
}
return 0;
}
저 같은 경우는 N이 5의 약수일 경우 N/5를 바로 출력하도록 하였고, N이 4이거나 7이면 -1을 출력하였습니다.
c언어 예제처럼 while문 안에서 N이 0보다 작을경우 -1을 리턴하여도 되지만
N의 무게를 제대로 채우지 못하는 경우는 N이 1, 2, 4, 7 중 하나일 경우밖에 없습니다.
N은 3이상의 자연수기 때문에 4거나 7이면 -1을 출력하였습니다.
while문에서 N을 3씩 감소시키며 cnt를 1씩 증가시키고, N이 0일경우 3의 약수이므로 cnt만 출력해주었습니다.
N 나누기 5의 나머지가 0일경우에는 5의 배수라는 뜻이기 때문에 현재 N의 값/5 + cnt를 하여 출력을 해주었습니다.
역시 c언어가 빠르네요 ..
'프로그래밍 > 백준알고리즘' 카테고리의 다른 글
백준 알고리즘 1193번 문제 풀이 - 분수 찾기 (0) | 2019.08.01 |
---|---|
백준 알고리즘 2292번 문제 풀이 - 벌집 (0) | 2019.08.01 |
백준 알고리즘 1978 문제 풀이 - 소수 찾기 (0) | 2019.07.30 |
백준 알고리즘 1712문제 풀이 - 손익분기점 (0) | 2019.07.30 |
백준 알고리즘 4948 문제 풀이 (java) - 베르트랑 공준 (0) | 2019.07.24 |