문제출처 : https://www.acmicpc.net/problem/14916
code
#include <stdio.h> int main() { int N, five = 0, two = 0, result = 0, flag = 0; scanf("%d", &N); five = N / 5; two = N % 5; while (1) { if (two % 2 == 0) break; else if (five == 0 && two % 2 != 0) { flag = 1; break; } else { five--; two += 5; } } result = five + (two / 2); if (flag == 0) printf("%d", result); else printf("-1"); return 0; }
코드는 매우쉽다.
여러방법이 있지만, 나는 5로 먼저 나누고, 나머지가 짝수로 떨어질때 까지 5로 나눈 몫을 -1하고 나머지에 +5를 해줬다. 그리고 flag를 세워서 딱 떨어지지 않는 수면, -1을 반환하도록 했다. 딱 떨어지지 않는수는 1이랑 3밖에 없는거같아서(검증은 안해봤음) N이 1이나 3이면 -1을 반환 하도록 하면 좀더 코드가 매끄러워지지 않을까 생각한다.