본문 바로가기
코딩 테스트 준비(백준, 프로그래머스)

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

by Luden59 2025. 9. 3.

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

 

오직 숫자, +, - 로만 이루어진 식을 괄호를 사용한다고 가정하였을 때,

가장 작은 값이 무엇인지 알아내는 문제이다.

 

물론 직관적으로 이해가 되겠지만,

그냥 문자열에서 - 가 나오면 그 다음 - 가 나오기 전까지의 모든 숫자를 더해서,

그 앞에 있던 숫자에 빼면 되는 문제이다.

 

예를 들어

55 - 50 + 40 이라면

- 를 기준으로 오른쪽에 있는 55라는 값에 - 뒤에 있는 50과 40을 더해서 빼면 되는 간단한 문제이다.

 

이 문제는 알고리즘이 딱히 어려운 문제는 아니기 때문에 

그냥 사용했던 STL 함수들을 정리해 보겠다.

 

1. string 클래스

https://learn.microsoft.com/ko-kr/cpp/standard-library/string-typedefs?view=msvc-170

 

<string> 형식 정의

자세한 정보: typedefs

learn.microsoft.com

string 헤더를 include 하여 사용한다.

내부적으로 전체 크기 관리해준다.

 

2. basic_string::find

https://learn.microsoft.com/ko-kr/cpp/standard-library/basic-string-class?view=msvc-170#find

 

basic_string 클래스

표준 C++ 문자열 클래스 'basic_string'에 대한 API 참조입니다.

learn.microsoft.com

특정 string에서 검색한 문자가 어느 인덱스에 있는지 반환해주는 함수이다.

str.find( 검색할 문자 , [검색 시작 위치])로 사용할 수 있다.
만약 해당 문자, 혹은 문자열이 주어진 string에 없다면 string::npos가 반환된다.

 

3. basic_string::substr

https://learn.microsoft.com/ko-kr/cpp/standard-library/basic-string-class?view=msvc-170#substr

 

basic_string 클래스

표준 C++ 문자열 클래스 'basic_string'에 대한 API 참조입니다.

learn.microsoft.com

특정 string에서 offset(문자열을 복사 시작할 위치)에서부터 count(복사할 문자 개수)만큼 복사하여 반환하는 함수이다.

 

나는 2번과 3번을 사용하여 일종의 split 형태를 만들어 사용했다.

 

최종 코드는 다음과 같다.

https://github.com/csy-59/CodingTestPrac/tree/main/%EB%B0%B1%EC%A4%80/Silver/1541.%E2%80%85%EC%9E%83%EC%96%B4%EB%B2%84%EB%A6%B0%E2%80%85%EA%B4%84%ED%98%B8

 

CodingTestPrac/백준/Silver/1541. 잃어버린 괄호 at main · csy-59/CodingTestPrac

This is an auto push repository for Baekjoon Online Judge created with [BaekjoonHub](https://github.com/BaekjoonHub/BaekjoonHub). - csy-59/CodingTestPrac

github.com

 

 

'코딩 테스트 준비(백준, 프로그래머스)' 카테고리의 다른 글

[백준] 1789 - 수들의 합  (0) 2025.09.06
[백준] 2217 - 로프  (0) 2025.09.06
[백준] 1026-보물  (0) 2025.09.04
[백준] 1931 - 회의실 배정  (0) 2025.09.02
[백준] 17298: 오큰수_22.06.2  (0) 2022.06.22