case 분류하기
- 5로 나누어 떨어지는 경우
- 5로 나누어떨어지지 않는 데 3으로는 나누어 떨어지는 경우 ex)6
- 3과 5의 조합으로 나누어 떨어지는 경우
- 나누어 떨어지지 않는 경우-> -1 출력
- 정수를 일단 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이므로 봉지 값은 유지된 체로 출력하고 반복문이 끝난다
#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;
}
}
}
다양한 조건이 얽혀있어서 코드를 잘 짰다고 생각했는 데 계속 틀렸다
다음에 풀 때는 무작정 코딩을 하는 것이 아닌 미리 어떻게 코드를 짤지 구성을 하고 짤 필요성을 느꼈다
이렇게 수학적 사고 방식을 요구하는 문제를 더 풀어보면서 문제의 조건을 완벽하게 이해할 수 있도록 노력해야겠다