728x90
문제
코드트리 | 코딩테스트 준비를 위한 알고리즘 정석
국가대표가 만든 코딩 공부의 가이드북 코딩 왕초보부터 꿈의 직장 코테 합격까지, 국가대표가 엄선한 커리큘럼으로 준비해보세요.
www.codetree.ai
정수 n이 주어졌을 때, 5의 용량을 가진 상자와 3의 용량을 가진 상자에 나누어 담으려 합니다.
가장 적은 상자를 써서 n을 모두 분배한다고 할 때의 상자의 개수를 출력하는 프로그램을 작성해 보세요.
코드
첫 번째 줄에 정수 n이 주어진다.
- 3 <= n <= 5000
이 문제는 5와 3으로 나누어 떨어질 수 있는 최소 수를 구하는 문제다.
n이 5로 나누어 떨어질 때까지 3씩 빼주면서 결과를 1씩 증가시킨 후, 5로 나누어 떨어질 수 있는 순간 5로 나눈 나머지를 더하여 결과를 구할 수 있다. 만약, 반복문이 벗어날 때까지 3을 빼어 음수가 되면, 5와 3으로 나누어 떨어지지 않으므로 -1을 출력한다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
int result = 0;
// n이 양수면서 5로 나누어 떨어질 때까지 반복
while (n % 5 != 0 && n >= 0) {
// n을 3씩 빼면서 result 값 증가
n -= 3;
result++;
}
// n이 음수면 -1
if (n < 0) {
result = -1;
} else {
// n이 0보다 크거나 같으면 result에 n을 5로 나눈 값 더하기
result += n / 5;
}
System.out.println(result);
}
}
728x90