문제 링크
풀이
parenthesis = input().replace("()", "L")
laser = []
count = 0
for i in parenthesis:
if i == "(":
laser.append(0)
elif i == ")":
cur_count = laser.pop()
count += cur_count + 1
if laser: laser[-1] += cur_count
else:
if laser: laser[-1] += 1
print(count)
문자열을 입력받고 레이저 부분만 다른 문자열로 바꾼다.
문자열을 순회하면서 아래의 과정을 반복한다.
1. "("가 나오면 laser에 원소를 추가한다.
2. "L"이 나오면 laser의 마지막 원소를 1 증가시킨다. (레이저로 잘린 횟수)
3.
- ")"가 나오면 laser의 마지막 원소를 삭제하고, count를 (마지막 원소 + 1) 만큼 증가시킨다. (잘린 횟수 + 1개 만큼의 쇠막대기가 나오기 때문)
- laser의 마지막 원소에 삭제한 원소의 값을 더한다. (아직도 삭제되지 않은 원소들은 삭제된 원소가 잘린 횟수만큼을 같이 잘렸기 때문)
'연습장 > 백준(BOJ) 문제풀이' 카테고리의 다른 글
[백준 15651] N과 M (3) with Python (0) | 2021.05.10 |
---|---|
[백준 9656] 돌 게임 2 with Node.js (0) | 2021.05.07 |
[백준 2331] 반복수열 with Node.js (0) | 2021.05.06 |
[백준 14889] 스타트와 링크 with Python (0) | 2021.05.06 |
[백준 3085] 사탕 게임 with Node.js (0) | 2021.05.04 |