백준 2839 설탕 배달

apircity·2022년 5월 6일
0

boj

목록 보기
6/24
post-thumbnail

boj 2839 설탕 배달

📌 how to solve

case 분류하기

  • 5로 나누어 떨어지는 경우
  • 5로 나누어떨어지지 않는 데 3으로는 나누어 떨어지는 경우 ex)6
  • 3과 5의 조합으로 나누어 떨어지는 경우
  • 나누어 떨어지지 않는 경우-> -1 출력

💡 idea

  • 정수를 일단 5로 나누는 것을 반복하고 만약 나머지가 0이라면 5의 배수이므로
    break하고 출력
  • 만약 나머지가 0이 아니라면 5로 나눴던 정수를 반복문 안에서 계속 -3을 하고
    나머지가 0이라면 break하고 만약 정수가 0보다 작아진다면 3과 5의 조합으로 나누어
    떨어지지 않는 것이기 때문에 -1 출력
    while (1)
    	{
    		if (sugar % 5 == 0) //5로 나누었을때 0인 경우
    		{
    			count += sugar / 5;
    			printf("%d", count);
    			break;
    		}
    		sugar = sugar - 3; // 5로 나눈 후 무한 -3
    		count++;
    		if (sugar < 0) //0보다 작게 나온다면 3과 5의 조합으로 나누어 떨어지지 않는 경우
    		{
    			printf("-1");
    			break;
    		}
    	}
3을 뺀후 5로 나눴을 때 나머지가 0이라면 설탕은 0인 상태고 0/5=0이므로 봉지 값은
유지된 체로 출력하고 반복문이 끝난다

🔑 code

#include<stdio.h>
int main()
{
	int sugar = 0; //설탕 
	int count = 0; //봉지
	scanf("%d", &sugar);
	while (1)
	{
		if (sugar % 5 == 0) //5로 나누었을 때 0이라면
		{
			count += sugar / 5;
			printf("%d", count);
			break;
		}
		sugar = sugar - 3; //나눈후 무한 -3
		count++;
		if (sugar < 0) //0보다 작게 나온다면 3과 5의 조합으로 나누어 떨어지지 않는 경우
		{
			printf("-1");
			break;
		}
	}
}

🎉 후기

다양한 조건이 얽혀있어서 코드를 잘 짰다고 생각했는 데 계속 틀렸다
다음에 풀 때는 무작정 코딩을 하는 것이 아닌 미리 어떻게 코드를 짤지 구성을 하고 짤 필요성을 느꼈다
이렇게 수학적 사고 방식을 요구하는 문제를 더 풀어보면서 문제의 조건을 완벽하게 이해할 수 있도록 노력해야겠다

profile
junior developer

0개의 댓글