작성일 :

문제 링크

5613번 - 계산기 프로그램

설명

숫자와 사칙연산이 순서대로 입력될 때,

입력된 순서 그대로 계산을 수행한 뒤 = 기호가 등장하면 그 시점의 결과를 출력하는 문제입니다.


  • 연산자 우선순위는 고려하지 않습니다. 입력 순서대로 처리해야 합니다.
  • 첫 번째로 수가 주어지고, 이후에는 연산자와 수가 번갈아 입력으로 주어집니다.
  • = 기호가 등장하면 계산을 종료하고 결과를 출력합니다.
  • 나눗셈의 경우 소수점 이하는 버림 처리합니다.
  • 나눗셈은 항상 피제수가 양수인 경우만 주어지므로, 예외 처리는 필요하지 않습니다.

접근법

  • 첫 번째 수를 먼저 입력받아 결과의 초기값으로 설정합니다.
  • 이후 연산자와 수가 번갈아 등장하므로,
    반복문을 통해 다음 연산자를 입력받으면서 다음 과정을 진행합니다:
    • 연산자가 =이면 반복을 종료
    • 그렇지 않다면 다음 수를 입력받아 해당 연산을 수행
  • 결과를 누적하여 계산한 후 출력합니다.



Code

C#

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
using System;

class Program {
  static void Main() {
    int x = int.Parse(Console.ReadLine());
    while (true) {
      string op = Console.ReadLine();
      if (op == "=") break;

      int y = int.Parse(Console.ReadLine());
      if (op == "+") x += y;
      else if (op == "-") x -= y;
      else if (op == "*") x *= y;
      else if (op == "/") x /= y;
    }
    Console.WriteLine(x);
  }
}

C++

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <bits/stdc++.h>
using namespace std;

int main() {
  ios::sync_with_stdio(false);
  cin.tie(nullptr);

  int x; cin >> x;
  while (true) {
    char op; cin >> op;
    if (op == '=') break;

    int y; cin >> y;
    if (op == '+') x += y;
    else if (op == '-') x -= y;
    else if (op == '*') x *= y;
    else if (op == '/') x /= y;
  }
  cout << x << "\n";

  return 0;
}