반응형
문제
https://www.acmicpc.net/problem/10799
풀이
스택을 사용해서 풀 수 있는 문제
괄호 문자열을 for문을 돌려서 살펴보면서 다음과 같은 동작을 수행한다.
- 여는괄호 등장 시 "(" 는 stack에 추가
- 닫는괄호 등장 시 stack에 추가된 여는 괄호 제거 (pop)
2번 동작에서 직전의 문자를 보고 수행할 행동이 달라져야 함
- 직전의 문자가 여는 괄호라면?
레이저임, 기존의 Stack의 size 만큼 더해주어야 한다.
Stack에 담겨있는 여는괄호들은 레이저를 의미하는 것이 아닌 막대기의 시작점이므로, 몇개의 막대기를 갈랐는지 더해주는 것과 동일
- 직전의 문자가 여는 괄호가 아니면?
막대기의 끝임
막대기의 끝이므로 1을 더해주어야 함.
막대기의 처음부터 끝까지 레이저가 자르지 않았어도 한개의 막대기이기 떄문이다.
잘랐더라고, 잘라진 곳부터 시작해서 끝까지의 부분이 한개의 막대기이기 때문에 1를 더해주는 것
소스코드
후기
괄호를 보자마자 먼저 스택을 떠올리게 되었다.
문제에 나와있는 그림을 보면서 로직을 떠올릴 수 있었던 문제
반응형
'PS > 백준' 카테고리의 다른 글
[BOJ] 백준 2577 숫자의 개수 (Swift) (1) | 2023.12.11 |
---|---|
[BOJ] 백준 2475 검증수 (Swift) (0) | 2023.12.11 |
[BOJ] 백준 1935 후위 표기식2 (Swift) (1) | 2023.11.19 |
[BOJ] 백준 28278 스택 2 (Swift) (0) | 2023.08.15 |
[BOJ] 백준 1205 등수 구하기 (Swift) (0) | 2023.06.14 |