[프로그래머스] 👷♀️ 쇠막대기 / Python
글 작성자: 택시 운전사
반응형
👷♀️ 쇠막대기 문제 풀어보기
😃 나의 코드
def solution(arrangement):
answer = 0
arrangement = arrangement.replace("()","L")
stack = []
for idx, c in enumerate(arrangement):
if c == '(':
stack.append('(')
answer += 1
elif c == ')':
stack.pop()
else:
answer += len(stack)
return answer
스택/큐 알고리즘 카테고리에 속한 문제입니다. 이 문제는 스택을 이용해 풀어야합니다. 우선 레이저에 해당하는 ()를 (과 )이 아닌 다른 문자 하나로 바꾸줍니다 여기서는 Lazer에 해당하는 L로 바꿔주었습니다. stack라는 list를 만들어 왼쪽부터 enumerate를 이용하여 탐색합니다.
if c == '(':
stack.append('(')
answer += 1
elif c == ')':
stack.pop()
else:
answer += len(stack)
우선 받은 문자가 (일 때입니다. stack에 (를 추가해주고 쇠막대기 수를 하나 추가합니다. 다음은 )일 때입니다. 막약 stack의 마지막 요소가 (이라면 stack의 스택을 pop해줍니다. 이는 막대기의 끝이라는 뜻입니다. 마지막으로 L이라면 레이저이기 때문에 stack의 크기 즉, 현재 레이저가 자르는 쇠막대기의 갯수만큼 추가합니다.
Written with StackEdit.
반응형
'Algorithm > Problem Solving' 카테고리의 다른 글
| [프로그래머스] 👩🏫 행렬의 곱셈 / Python (0) | 2019.02.15 |
|---|---|
| [프로그래머스] ☎ 전화번호 목록 / Python (0) | 2019.02.14 |
| [프로그래머스] 🧱 프렌즈 4 블록 - [1차] 2018 카카오 블라인드 채용 / Python (0) | 2019.02.14 |
| [프로그래머스] 👩💼 뉴스 클러스터링 - [1차] 2018 카카오 블라인드 채용 / Python / KAKAO BLIND RECRUITMENT (0) | 2019.02.14 |
| [프로그래머스] 👨💻 캐시 - [1차] 2018 카카오 블라인드 채용 / Python (0) | 2019.02.13 |
댓글
이 글 공유하기
다른 글
-
[프로그래머스] 👩🏫 행렬의 곱셈 / Python
[프로그래머스] 👩🏫 행렬의 곱셈 / Python
2019.02.15 -
[프로그래머스] ☎ 전화번호 목록 / Python
[프로그래머스] ☎ 전화번호 목록 / Python
2019.02.14 -
[프로그래머스] 🧱 프렌즈 4 블록 - [1차] 2018 카카오 블라인드 채용 / Python
[프로그래머스] 🧱 프렌즈 4 블록 - [1차] 2018 카카오 블라인드 채용 / Python
2019.02.14 -
[프로그래머스] 👩💼 뉴스 클러스터링 - [1차] 2018 카카오 블라인드 채용 / Python / KAKAO BLIND RECRUITMENT
[프로그래머스] 👩💼 뉴스 클러스터링 - [1차] 2018 카카오 블라인드 채용 / Python / KAKAO BLIND RECRUITMENT
2019.02.14