알고리즘/백준

[BaekJoon] 백준 2839번_설탕 배달 for Java

정석이 2021. 9. 19. 18:38

 

 

 

 

 

 

 

 

 


 

 

 

이 문제는.... 은근히 머리 굴려야 했다.

 

 

쉽게 보다가 test case 여러개 안해봤으면 틀릴뻔~~!!!!

 

 

 

내가 푼 방법은 몫과 나머지의 상관관계를 생각하면서 풀었다!

 

 

 

 

 

이런 느낌

 

 

 

가장 효율적으로 가야하니까 5로 나누고 몫을 하나씩 줄이면서 나머지 값을 3으로 나눈 나머지가 0이면 값이 존재한다고 가정했다.

 

 

 

 

 

 

 

코드

 

package BeakJoon;

import java.util.Scanner;

public class Beak2839 { // 설탕 배달
	public static void main(String[] args) {
		
		Scanner scan = new Scanner(System.in);
		int N = scan.nextInt();
		
		
		if(N >= 5) {
		
			int i = N / 5; // 몫

			for(int k = i; k >= 0; k--) {

				int j = N - (5 * k); // 나머지

				if(j % 3 == 0) {
					System.out.println(k + j/3);
					break;}
				else if(j == N)
					System.out.println("-1");
			}
		}
		
		else
		{
			if(N % 3 == 0)
				System.out.println(N/3);
			else
				System.out.println("-1");
		}
		
		scan.close();
	}

}

 

 

 

 

 

여기서 중요한점!!

 

 

N >= 5일 때 else문에 System.out.println("-1"); 을 넣으면 틀린다!

 

 

왜냐하면 그러면 for문이 돌아갈 때마다 -1이 출력된다..... 그래서 나머지값 = N값이 되었을 때 -1을 출력하도록 했다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

머리를 써서 치매 예방해야지!

 

 

1일 1문제 하고싶은데 생각보다 쉽지 않다ㅠㅠ 화이팅!!