티스토리 뷰

알고리즘

백준 #2839 java 2023.01.20

chaewonni 2023. 1. 20. 04:09

설탕배달문제! 처음에 보고 풀때는 생각보다 쉬운데?! 하고 제출했더니 1초만에 틀렸습니다가 뜬 문제...^^

안나눠지면 그냥 주머니가 안채워져도 +1을 더하면 되는 줄 알았는데 그렇게 쉬울리가 없지.ㅎㅎ

생각보다 생각해야할 조건들이 많았던 문제였다.

 

처음에 풀었던 코드는

package boj_basic.step7;

import java.util.Scanner;

public class Q2839 {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		int N = sc.nextInt();
		
		if(N/5==0)
			System.out.println(-1);
		else if((N%5)%3==0)
			System.out.println(N/5+(N%5)/3);
		else if((N%5)%3>0) {
			if(N%3==0)
				System.out.println(N/3);
			else
				System.out.println(-1);
		}



	}

}

이랬다. 근데 11을 입력하면 3이 나오지 않고 -1이 자꾸 나와서 아니 5봉지 하나, 3봉지 두개로 되는데 왜 자꾸 -1이 출력되는 거야! 했는데 알고보니 내가 5로 먼저 나누고 나머지를 구해서 그런거였다.. 그거 알고 갑자기 코드를 뒤집어 엎어야 하구나라는 멘붕에 빠졌다..

 

import java.util.Scanner;

public class Q2839_1 {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		int n = sc.nextInt();
		int x = 0;
		
		while(true) {
			if(n%5==0) {
				System.out.println(n/5+x);
				break;
			}
			else if(n<=0) {
				System.out.println(-1);
				break;
			}
			
			n-=3;
			x++;
		}

	}

}

다른 분의 코드https://blog.naver.com/vnemftnsska2/221490459362를 참고하여 작성하였는데 이렇게 짧고 간결하게 코드를 짤 수 있다는 게 대단하다고 느껴졌다.

5로 나눈 나머지가 0이 아니면 (5킬로그램 봉지에만 담아갈 수 없다면) 계속 -3씩 빼고, 그때마다 3킬로 봉지를 하나씩 추가해준다. 이 과정을 무한반복문에서 break가 걸릴때까지 계속 진행해주면 된다. 

 

문제의 풀이방법 틀을 어떻게 짜느냐에 따라 코드의 길이가 천차만별이 될 수 있구나를 느낀 문제였다.

'알고리즘' 카테고리의 다른 글

백준 #2738 java 2023.01.22  (0) 2023.01.22
백준 #10757 java 2023.01.20  (0) 2023.01.20
백준 #1193 java 2023.01.18  (0) 2023.01.18
백준 #2775 java 2023.01.18  (2) 2023.01.18
백준 #1712 java 2023.01.17  (0) 2023.01.17
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/08   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
글 보관함