문제출처 : https://www.acmicpc.net/problem/17521
code
#include <stdio.h> int main() { long long coin = 0, n, price[20]; long long W; scanf("%lld %lld", &n,&W); for (int i = 0; i < n; i++) scanf("%lld", &price[i]); for (int i = 0; i < n-1; i++) if (price[i] < price[i + 1]) { coin = W / price[i]; W = W % price[i]; coin = price[i + 1] * coin; W += coin; } printf("%lld", W); return 0; }
코드는 정말 짧고 간단하다.
그래프가 올라가면(가격이 올라가면) 사서 팔면 된다.하지만 마지막 출력 조건에 비록 초기 현금 W는 그렇게 크지 않지만 최종 현금은 매우 커질 수 있음에 주의하자. 라고 강조했는데, 이것은 int의 범위를 벗어날 수 도 있다는 뜻이다.
나도 처음에 short로 했다가 int 로 했다가 long 했다가 long long하니까 되더라...아니 알고리즘은 맞는데 계속 52%에서 틀렸다고 뜨니까.. 질문하려고 했는데, 항상 문제는 나한테 있었고 답은 문제속에 있다는것을 다시한번 되새겼다.