~cpp #include <stdio.h> int solve(int *); int evalMeets(int); int accumCount(int); double meetPins[11] = {0, 5.5 + 1 * 60, 10.5 + 2 * 60, 16.5 + 3 * 60, 21.5 + 4 * 60, 27.5 + 5 * 60, 32.5 + 6 * 60, 38.5 + 7 * 60, 43.5 + 8 * 60, 49.5 + 9 * 60, 54.5 + 10 * 60}; int main(void) { int num, input[4], i, j, output[10] = {0, }; scanf("%d", &num); i = 0, j = num; while (j--) { scanf("%d%d%d%d", &input[0], &input[1], &input[2], &input[3]); output[i] = solve(input); i++; } i = 0; while (num--) printf("%d\n", output[i++]); return 0; } int solve(int * arg) { int startTime, endTime, ret = 0; if (arg[0] == 12) arg[0] = 0; if (arg[2] == 12) arg[2] = 0; startTime = arg[0] * 60 + arg[1]; endTime = arg[2] * 60 + arg[3]; if (evalMeets(startTime)) ret++; while ( startTime = (++startTime % 720), startTime != endTime ) if (evalMeets(startTime)) ret++; return ret; } int evalMeets(int curTime) { int prev, present; if (!curTime) return 1; prev = accumCount(curTime); present = accumCount(++curTime); if (prev != present) return 1; return 0; } int accumCount(int time) { int i, ret; for (i = 0, ret = 0; i < 11; i++) if (time < meetPins[i]) ret++; else ret--; return ret; }
๋ํ์์ ํ ์์ค๋ ์๋๊ณ ์, ๋ฐฉ๊ธ ์ง ์์ค ์
๋๋ค. ๋ฉ์ธ์์ด๋์ด๋ ๋ํ์ ์๊ฐํ๋ ๊ฒ๊ณผ ๊ฐ์ต๋๋ค๋ง, ๋ํ๋๋ ์์นจ์ด ์์ง์ด๋ ๊ฒ์ ์๊ฐํ์ง ๋ชปํด์ ์คํจํ์๊ตฐ์.