-
[java] 백준 알고리즘 2839번 설탕 배달 풀이 소스알고리즘/백준 알고리즘 2018. 4. 3. 11:08
사칙연산 종류 문제다.
고민하다가 5를 나눠보고 그 나머지 값들로 답을 찾으면 되겠다 싶었다.
n을 5로 나눴을 때,
나머지가 1일 경우에는 몫에서 -1을 해주면 5+1을 만들어줄 수 있다. 즉, 6이 되기 때문에 3kg 봉지 2개에 담으면 된다.
나머지가 2일 경우에는 몫에서 -2를 해주면 10+2가 된다. 즉, 12가 되기 때문에 3kg 봉지 4개에 담을 수 있다.
(단, n이 7일 경우에는 성립 안됨)
나머지가 3일 경우에는 그냥 3kg 봉지 1개 더 담아주면 된다.
나머지가 4일 경우에는 몫에서 -1을 해주면 5+4가 된다. 즉, 9가 되기 때문에 3kg 봉지 3개에 담을 수 있다.
(단, n이 4일 경우에는 성립 안됨)
나머지가 0일 경우에는 5kg 봉지에 다 담아주면 된다.
그럼 4와 7 이외에는 3과 5kg 봉지로 설탕량이 얼마나 되든 다 담을 수 있기 때문에
4와 7만 -1 로 출력된다.
이것을 코딩하면 다음과 같다.
12345678910111213141516171819202122232425262728293031323334353637383940public class Baekjoon2839 {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int n = sc.nextInt(); // 배달하는 설탕의 양(kg)int remainder = n%5; // 나머지int quotient = n/5; // 몫int output = 0; // 결과: 배달하는 봉지의 최소 개수if(remainder == 1){ // 나머지가 1일 경우quotient -= 1;output = quotient +2;}else if(remainder == 2 && n != 7){ // 나머지가 2일 경우quotient -= 2;output = quotient + 4;}else if(remainder == 3){ // 나머지가 3일 경우output = quotient +1;}else if(remainder == 4 && n != 4){ // 나머지가 4일 경우quotient -= 1;output = quotient + 3;}else if(remainder ==0){ // 나머지가 0일 경우output = quotient;}if(n == 4 || n == 7){output = -1;}System.out.println(output);}}cs '알고리즘 > 백준 알고리즘' 카테고리의 다른 글
[java] 백준 알고리즘 2579번 계단오르기 풀이소스 (0) 2018.05.09 [java] 백준 알고리즘 1463번 1로 만들기 풀이 소스 (0) 2018.04.23 [java] 백준 알고리즘 1934번 최소공배수 풀이 소스 (0) 2018.04.03 [java] 백준 알고리즘 1654번 랜선 자르기 풀이 소스(이분탐색) (0) 2018.04.02 [java] 백준 알고리즘 1546번 평균 풀이 소스 (0) 2018.03.30