문제출처 : https://www.acmicpc.net/problem/4796
L,P,V만 헷갈리지 않게 주석을 달아주고 유의해주면 알고리즘 자체는 그렇게 어렵지 않았다.
다만 다른 더 쉬운방법이 분명 있을것 같긴하다.
P,V,L모두 배열로 두지않고 입력받고 바로 Case배열에 계산해서 집어넣으면 더 효율적인코드가 될것같다.
문제에 테스트 케이스제한은 명시되어있지 않지만, C언어 기준 short자료형으로도 문제없는것 보면 테스트케이스는 그렇게 많지는 않은듯 하다.code
#include <stdio.h> int main() { // P = 연속하는일 L = 사용가능한일 V = 휴가일 int P[1000], L[1000], V[1000], Case[1000]; int i = 0, j = 0, k = 0; while (1) { scanf("%d %d %d", &L[i], &P[i], &V[i]); if (L[i] == 0) break; i++; } for (j = 0; j < i; j++) { Case[j] = L[j] * (V[j] / P[j]); if (V[j] % P[j] <= L[j]) Case[j] += V[j] % P[j]; else Case[j] += L[j]; } while (i) { printf("Case %d: %d\n", k + 1, Case[k]); i--; k++; } return 0; }