문제
초기 눈금과 이후 눈금 값들이 주어지면, 연속 두 값의 차이를 소수점 둘째 자리까지 출력하라. 999 입력 시 종료.
입력
초기 눈금 값과 이후 눈금 값들이 주어진다. 999가 나오면 종료.
출력
연속 두 값의 차이를 소수점 둘째 자리까지 출력한다.
예제
| 입력 | 출력 |
|---|---|
10.0 14.5 17.3 999 | 4.50 2.80 |
풀이
이전 눈금 값을 저장하고, 새 값이 입력될 때마다 차이를 계산한다.
- 초기 눈금 값을 저장한다
- 새 값을 입력받아 999이면 종료한다
- 현재 값 - 이전 값을 소수점 둘째 자리까지 출력한다
- 이전 값을 현재 값으로 갱신한다
핵심 아이디어: 이전 값만 기억하면 연속 차이를 O(1) 공간에 계산할 수 있다.
코드
#include <iostream>
using namespace std;
int main()
{
double a, b, n, cnt;
cin >> n;
cnt = n;
while (1)
{
cin >> a;
if (a == 999)
break;
printf("%.2f\n", a - cnt);
cnt = a;
}
}복잡도
- 시간: O(N) (N: 입력 횟수)
- 공간: O(1)