문제 출처 : https://www.acmicpc.net/problem/17451
code
#include <stdio.h> #include <stdlib.h> int main() { int i, n, speed; int* arr; scanf("%d", &n); arr = (int*)malloc(n * sizeof(int)); for (i = 0; i < n; i++) scanf("%d", &arr[i]); speed = arr[n-1]; for (i = n - 2; i >= 0; i--) { if (arr[i] > speed) speed = arr[i]; else { if (speed % arr[i]) speed = (speed / arr[i] + 1) * arr[i]; } } printf("%d", speed); free(arr); return 0; }
푸는 방법은 맞는데 백준제출하면 계속 틀렸다고 나온다 ㅠㅠ
C++로 해결했다. 알고리즘은 동일하게 적용했고, speed변수의 범위를 long long으로 변경해주었다.
code
#include <iostream>
using namespace std;
int arr[300000] = {};
int main()
{
int i, n;
long long speed;
cin >> n;
for (i = 0; i < n; i++)
cin >> arr[i];
speed = arr[n-1];
for (i = n - 2; i >= 0; i--)
{
if (arr[i] > speed)
speed = arr[i];
else
{
if (speed % arr[i])
speed = (speed / arr[i] + 1) * arr[i];
}
}
cout << speed;
return 0;
}