본문 바로가기
알고리즘 문제풀이/백준

[백준 1541] 잃어버린 괄호

by m2162003 2020. 12. 16.

www.acmicpc.net/problem/1541

 

1541번: 잃어버린 괄호

첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다

www.acmicpc.net

-등장 이후로 전부 -로 계산하면 되는 쉬운 문제였으나..처음에 어렵게 접근하여 스택쓰고 난리났다..

괄호는 맘대로 칠 수 있으므로 -가 등장한 이상 뒤에 수를 전부 -로 계산가능하다.

 

식에서 숫자가 마지막으로 등장하기 때문에 i<len으로 조건을 세우면 마지막 숫자를 위해 한번더 계산을 해줘야 한다. 번거로움을 막고자 i<=len으로 설정하여 처리했다. 

 

#include <stdio.h>
#include <string.h>
#include <cctype>

using namespace std;

char str[51];
int main(void)
{
  scanf("%s", str);

  int len = strlen(str);

  int i = 0;
  bool minus = false;
  int tmp = 0, result = 0;
  while (i <= len)
  {
    while (isdigit(str[i]))
    {
      tmp = tmp * 10 + str[i] - '0';
      i++;
    }

    if (minus)
      result -= tmp;
    else
      result += tmp;

    if (str[i] == '-')
    {
      minus = true;
    }
    tmp = 0;
    i++;
  }

  printf("%d\n", result);
  return 0;
}

'알고리즘 문제풀이 > 백준' 카테고리의 다른 글

[백준 2012] 등수 매기기  (0) 2020.12.16
[백준 1543] 문서 검색  (0) 2020.12.16
[백준 2011] 암호코드  (0) 2020.12.15
[백준 1629] 곱셈  (1) 2020.12.13
[백준 1495] 기타리스트  (0) 2020.12.13

댓글