백준 1541번: 잃어버린 괄호

2021. 7. 20. 00:32·IT/BOJ 문제정리

https://www.acmicpc.net/problem/1541

1541번: 잃어버린 괄호

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

www.acmicpc.net



0. 알고리즘 분류
수학, 문자열, 그리디 알고리즘, 파싱


1. 문제



2. 풀이
문제를 처음 읽고 이해를 못했다. 괄호를 쳐서 최솟값을 만들어라. 그럼 괄호를 숫자 사이에 치면, 곱셈으로 봐도 되는건가? "55-50+40"을 "5(5-50)+40"으로 봐야하는건가? 근데 그러면 예제로 준 값과 다른데. 조건이 제대로 명시되어있지 않아서 조금 헷갈렸다. 위와 같은 괄호를 쳐서 곱셈을 하는 것은 문제에서 요구하는 것과는 다르므로 쓰면 안된다. "55-(50+40)"이 요구하는 것이다.

단순히 뺄셈 뒤부터 다음 뺄셈 앞까지 숫자들을 다 더해서, 그 앞의 숫자에서 빼주면 된다. 필자는 상당히 무식하게 반복문과 조건문을 남발하여 풀었지만, 이보다 더 효율적인 코드는 많을 것이다.


3. 코드

#include <bits/stdc++.h> using namespace std; int main(void) { string s; cin >> s; int ans = 0; int i = 0; while (i < s.size() && '0' <= s[i] && s[i] <= '9') { ans = 10*ans + (s[i]-'0'); i++; } for (; i < s.size(); i++) { int temp = 0; if (s[i] == '+') { i++; while (i < s.size() && '0' <= s[i] && s[i] <= '9') { temp = 10*temp + (s[i]-'0'); i++; } ans = ans + temp; } else if (s[i] == '-') { i++; int sum = 0; while (i < s.size() && s[i] != '-') { if ('0' <= s[i] && s[i] <= '9') { int temp2 = 0; while (i < s.size() && '0' <= s[i] && s[i] <= '9') { temp2 = 10*temp2 + (s[i]-'0'); i++; } sum += temp2; } i++; } ans = ans-sum; } i--; } cout << ans; return 0; }

'IT > BOJ 문제정리' 카테고리의 다른 글

백준 1676번: 팩토리얼 0의 개수  (0) 2021.07.21
백준 17298번: 오큰수  (0) 2021.07.20
백준 2573번: 빙산  (0) 2021.07.16
백준 1629번: 곱셈  (0) 2021.07.15
백준 4179번: 불!  (0) 2021.07.14
'IT/BOJ 문제정리' 카테고리의 다른 글
  • 백준 1676번: 팩토리얼 0의 개수
  • 백준 17298번: 오큰수
  • 백준 2573번: 빙산
  • 백준 1629번: 곱셈
KimCookieYa
KimCookieYa
무엇이 나를 살아있게 만드는가
  • KimCookieYa
    쿠키의 주저리
    KimCookieYa
  • 전체
    오늘
    어제
    • 분류 전체보기 (576)
      • 혼잣말 (88)
      • TIL (3)
      • 커리어 (24)
        • Sendy (21)
        • 외부활동 기록 (2)
      • 프로젝트 (186)
        • 티스토리 API (5)
        • 코드프레소 체험단 (89)
        • Web3 (3)
        • Pint OS (16)
        • 나만무 (14)
        • 대회 (6)
        • 정글 FE 스터디 (16)
        • MailBadara (12)
        • github.io (1)
        • 인공지능 동아리, AID (5)
        • 졸업과제 (18)
        • OSSCA 2024 (1)
      • 크래프톤 정글 2기 (80)
      • IT (169)
        • 코딩 (4)
        • CS (18)
        • 에러 (5)
        • 블록체인 (23)
        • Front-End (40)
        • 알고리즘&자료구조 정리 (3)
        • 코딩테스트 (3)
        • BOJ 문제정리 (41)
        • WILT (12)
        • ML-Agents (4)
        • 강화학습 (1)
        • Android (0)
        • LLM (2)
      • 전공 (1)
        • 머신러닝 (1)
      • 자기계발 (20)
        • 빡공단X베어유 (2)
        • 독서 (15)
  • 블로그 메뉴

    • 홈
    • 방명록
    • Github
    • Velog
    • 관리
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    RNN
    파이썬
    Flutter
    react
    numpy
    크래프톤정글
    알고리즘
    Pint OS
    자바스크립트
    프로그래머스
    글리치해커톤
    docker
    사이드프로젝트
    졸업과제
    리액트
    코드프레소
    센디
    니어프로토콜
    해커톤
    부산대
    머신러닝
    JavaScript
    딥러닝
    OS
    MailBadara
    핀토스
    블록체인
    나만무
    pintos
    NEAR Protocol
  • hELLO· Designed By정상우.v4.10.3
KimCookieYa
백준 1541번: 잃어버린 괄호
상단으로

티스토리툴바