728x90
반응형
https://programmers.co.kr/learn/courses/30/lessons/64061?language=python3
최종 코드
def solution(board, moves):
answer = 0
stack = []
for m in moves:
for row in range(len(board)):
if board[row][m-1] != 0:
if len(stack) > 0:
if stack[-1] == board[row][m-1]:
answer += 2
stack.pop()
else: stack.append(board[row][m-1])
else: stack.append(board[row][m-1])
board[row][m-1] = 0
break
return answer
풀이 과정
풀이 시간 20분
def solution(board, moves):
answer = 0
stack = []
for m in moves:
#m-1열의 인형이 있는 행 찾기
for row in range(len(board)):
#뽑을 인형을 찾은 경우
if board[row][m-1] != 0:
#stack이 비어있지 않은 경우
if len(stack) > 0:
#stack의 top에 있는 인형과 현재 뽑으려는 인형이 같은 경우
if stack[-1] == board[row][m-1]:
#stack의 top에 있는 인형과 현재 뽑으려는 인형이 사라진다
answer += 2
stack.pop()
#stack의 top에 있는 인형과 현재 뽑으려는 인형이 다른 경우, stack에 인형을 쌓는다
else: stack.append(board[row][m-1])
#stack이 비어있는 경우, stack에 인형을 쌓는다
else: stack.append(board[row][m-1])
#인형을 뽑았으므로, 빈 칸으로 표현한다
board[row][m-1] = 0
break
return answer
#시간복잡도 = O(len(moves)*len(board)) = O(n), 공간복잡도 = O(n)
참고
- 3. 불량 사용자 -> https://hwayomingdlog.tistory.com/144
- 4. 호텔 방 배정 ->
- 5. 징검다리 건너기 -> https://hwayomingdlog.tistory.com/154
728x90
반응형
'코테 노트 > 프로그래머스' 카테고리의 다른 글
Level 2 거리두기 확인하기 <2021 카카오 인턴십> Python 3 (0) | 2021.08.31 |
---|---|
Level 3 불량 사용자 <2019 카카오 인턴십> Python 3 (0) | 2021.08.31 |
Level 3 표 편집 <2021 카카오 인턴십> Python 3 (0) | 2021.08.27 |
Level 1 키패드 누르기 <2020 카카오 인턴십> Python 3 (0) | 2021.08.24 |
Level 3 보석 쇼핑 <2020 카카오 인턴십> Python 3 (0) | 2021.08.23 |