개발자 피터
Peter's Dev Blog
개발자 피터
전체 방문자
오늘
어제
  • 분류 전체보기 (77)
    • 🧑🏻‍💻 Develop (13)
      • Devops (3)
      • Elasticsearch (3)
      • Design Pattern (1)
      • SQL (4)
      • Architecture (1)
      • APM (1)
    • 💻 Service (7)
      • E-ROOM (3)
      • Briefing (4)
    • 💡 Problem Solving (43)
      • Baekjoon (40)
      • Programmers (2)
    • 📚 Reading (12)
      • Tech (9)
      • Self-Help (3)
    • 💬 Etc (1)
    • 📈 Retrospective (1)

블로그 메뉴

  • 🌟 깃허브
  • 🏷️ 태그 클라우드
  • 📝 방명록

공지사항

인기 글

태그

  • E-ROOM
  • 그리디
  • boj
  • MySQL
  • Programmers
  • SQL
  • java
  • 백준
  • 독서
  • 구현
  • briefing
  • 백트래킹
  • 브루트포스
  • 문자열
  • elasticsearch

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
개발자 피터

Peter's Dev Blog

💡 Problem Solving/Baekjoon

[백준 - 1541] 잃어버린 괄호 [C++]

2023. 10. 16. 20:28
728x90
반응형

1. 문제

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

 

1541번: 잃어버린 괄호

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

www.acmicpc.net

 

2. 풀이

첫 번째 '-' 연산자가 나타날 때까지는 모든 숫자들을 더하고, 
첫 번째 '-' 연산자가 나타난 이후의 모든 숫자들은 빼주면 된다.

 

3. 코드

#include <iostream>
#include <string>
#include <algorithm>

using namespace std;
string expression;
string number;
int answer;

bool isNegative = false;

// 1541
/*
    첫 번째 '-' 연산자가 나타날 때까지는 모든 숫자들을 더하고, 
    첫 번째 '-' 연산자가 나타난 이후의 모든 숫자들은 빼주면 된다.
*/
int main() {
    cin.tie(nullptr);
    ios::sync_with_stdio(false);

    cin >> expression;
  
    number += expression[0];
    for(int i=1; i<expression.size(); i++) {

        if(expression[i] == '+') {
            
            if(isNegative) {
                answer -= atoi(number.c_str());
            } else {
                answer += atoi(number.c_str());
            }

            number = "";
        }
        if(expression[i] == '-') {
            
            if(isNegative) {
                answer -= atoi(number.c_str());
            } else {
                answer += atoi(number.c_str());
            }

            number = "";
            isNegative = true;
        }
        else {
            number += expression[i];
        }
    }

    if(isNegative) {
        answer -= atoi(number.c_str());
    } else {
        answer += atoi(number.c_str());
    }

    cout << answer;

    return 0;
}
728x90
반응형
저작자표시 (새창열림)

'💡 Problem Solving > Baekjoon' 카테고리의 다른 글

[백준 - 11286] 절댓값 힙 [C++]  (0) 2023.10.18
[백준 - 1931] 회의실 배정 [C++]  (0) 2023.10.17
[백준 - 15829] Hashing [C++]  (0) 2023.10.14
[백준 - 13335] 트럭 [C++]  (0) 2023.10.14
[백준 - 20040] 사이클 게임 [C++]  (0) 2023.10.13
    '💡 Problem Solving/Baekjoon' 카테고리의 다른 글
    • [백준 - 11286] 절댓값 힙 [C++]
    • [백준 - 1931] 회의실 배정 [C++]
    • [백준 - 15829] Hashing [C++]
    • [백준 - 13335] 트럭 [C++]
    개발자 피터
    개발자 피터
    Backend Engineer 🔥

    티스토리툴바