© 2025 anveloper.dev
GitHub·LinkedIn·Contact

목차

  • 문제
  • 입력
  • 출력
  • 예제
  • 풀이
  • 코드
  • 복잡도
풀이 목록으로 돌아가기

BOJ 4766 - 일반 화학 실험

2024-08-25
BOJ
브론즈 III
cpp
원본 문제 보기
수학
사칙연산

문제

BOJ 4766 - 일반 화학 실험

초기 눈금과 이후 눈금 값들이 주어지면, 연속 두 값의 차이를 소수점 둘째 자리까지 출력하라. 999 입력 시 종료.

입력

초기 눈금 값과 이후 눈금 값들이 주어진다. 999가 나오면 종료.

출력

연속 두 값의 차이를 소수점 둘째 자리까지 출력한다.

예제

입력출력
10.0 14.5 17.3 9994.50 2.80

풀이

이전 눈금 값을 저장하고, 새 값이 입력될 때마다 차이를 계산한다.

  1. 초기 눈금 값을 저장한다
  2. 새 값을 입력받아 999이면 종료한다
  3. 현재 값 - 이전 값을 소수점 둘째 자리까지 출력한다
  4. 이전 값을 현재 값으로 갱신한다

핵심 아이디어: 이전 값만 기억하면 연속 차이를 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)