[프로그래머스] 👷♀️ 쇠막대기 / 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