728x90
https://code-challenge.elice.io/courses/282926/lectures/2455429/lecturepages/21567984/
Day 3
💡 풀이 과정
- 괄호가 있는 문제는 연산 처리와 비슷하게 Stack 을 사용하면 편하다.
- 모든 요소들을 Stack 에 집어넣고 ")" 가 나타나면 분기처리한다.
- "(" 를 찾을 때까지 진행하며, "(" 다음의 숫자만큼 스택에 존재하는 String 값을 곱해준다.
- python 에서는 "String" * int 를 진행하면 int 만큼 String 이 반복된다.
- 이때, 뒤에서부터 진행하는 것이므로 문자열을 더해줄 때 Stack 에서 pop 한 값을 문자열 앞에 더해준다! (물론 글자 길이에서는 변함 없다)
- 괄호를 다 처리된 문자열들이 Stack 에 쌓여있기 때문에 이를 모두 꺼내 출력한다.
- "(" 를 찾을 때까지 진행하며, "(" 다음의 숫자만큼 스택에 존재하는 String 값을 곱해준다.
📌 포인트
- 괄호는 재귀보다 Stack 을 사용
- 문자열을 더해주는 위치에 주의
- 3(7) 은 [777] 이 담기지만 111 같은 입력은 Stack 에 [1, 1, 1] 로 담기기에 출력 시 주의
💻 코드
import sys
input = sys.stdin.readline
arr = list(input().strip())
stack = []
for i in arr:
if i != ")":
stack.append(i)
else:
temp = ""
while stack[-1] != "(":
temp = stack.pop() + temp
stack.pop()
num = int(stack.pop())
stack.append(temp * num)
print(len("".join(stack)))
728x90
'Algorithm > PS' 카테고리의 다른 글
[엘리스][Python] 시즌2. 알고리즘 코드 챌린지 [Day5] - 수열 복원 (0) | 2024.07.13 |
---|---|
[엘리스][Python] 시즌2. 알고리즘 코드 챌린지 [Day4] - 트리 위의 게임 (0) | 2024.07.12 |
[엘리스][Python] 시즌2. 알고리즘 코드 챌린지 [Day2] - 정리 정돈을 좋아하는 k씨 (0) | 2024.07.11 |
[엘리스][Python] 시즌2. 알고리즘 코드 챌린지 [Day1] - 목표량 (0) | 2024.07.11 |
[프로그래머스][Python] 프로그래머스 2024 KAKAO WINTER INTERNSHIP: 산 모양 타일링 (0) | 2024.07.03 |