© 2025 anveloper.dev
GitHub·LinkedIn·Contact

목차

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

BOJ 5355 - 화성 수학

2024-12-16
BOJ
브론즈 II
cpp
원본 문제 보기
수학
구현

문제

BOJ 5355 - 화성 수학

초기 숫자에 화성의 특수 연산자 @(x3), %(+5), #(-7)을 순서대로 적용한 결과를 출력하라.

입력

테스트 케이스 수 T, 각 케이스마다 초기 숫자와 연산자 기호들이 한 줄로 주어진다.

출력

각 케이스마다 결과를 소수점 둘째 자리까지 출력한다.

예제

입력출력
1 3.0 @ %14.00

풀이

초기 값에 연산자를 순서대로 적용한다.

  1. 초기 실수 값을 입력받는다
  2. 줄 끝까지 문자를 하나씩 읽으며 @이면 x3, %이면 +5, #이면 -7을 적용한다
  3. 결과를 소수점 둘째 자리까지 fixed와 precision(2)로 출력한다

핵심 아이디어: cin.get으로 문자 단위로 읽으며 개행 문자를 만나면 해당 케이스를 종료한다.

코드

#include <iostream>
#include <string>
#include <iomanip>
using namespace std;
int main()
{
  int test;
  cin >> test;
  double n;
  char ch;
  for (int i = 0; i < test; i++)
  {
    cin >> n;
    while (1)
    {
      cin.get(ch);
      if (ch == '\n')
      {
        break;
      }
      if (ch == '@')
      {
        n *= 3;
      }
      if (ch == '%')
      {
        n += 5;
      }
      if (ch == '#')
      {
        n -= 7;
      }
    }
    cout << fixed;
    cout.precision(2);
    cout << n << "\n";
  }
}

복잡도

  • 시간: O(T × L) (L: 각 줄의 연산자 수)
  • 공간: O(1)