문제
https://programmers.co.kr/learn/courses/30/lessons/64061
풀이
그냥 단순 구현문제였다.
def solution(board, moves):
answer = 0
stack = []
for m in moves:
for row in board:
if row[m-1] != 0: #해당 줄의 가장 위에 놓인 인형을 스텍에 쌓음
stack.append(row[m-1])
row[m-1] = 0
break
if len(stack) >= 2: #쌓인 인형이 1개 이하일 때 발생하는 예외처리
if stack[len(stack)-1] == stack[len(stack)-2]: #최근에 쌓인 두 인형의 종류가 같다면
answer += 2 #두개의 인형을 없앰
stack.pop()
stack.pop()
return answer
다른 사람의 풀이
def solution(board, moves):
stacklist = []
answer = 0
for i in moves:
for j in range(len(board)):
if board[j][i-1] != 0:
stacklist.append(board[j][i-1])
board[j][i-1] = 0
if len(stacklist) > 1:
if stacklist[-1] == stacklist[-2]:
stacklist.pop(-1)
stacklist.pop(-1)
answer += 2
break
return answer
로직은 비슷하다
stacklist[-1], stacklist[-2] 이렇게 가져오는 문법이 있다는 것을 배웠다.
'알고리즘 스터디 2021.07~' 카테고리의 다른 글
[프로그래머스] 2020 카카오 인턴십 수식 최대화 (0) | 2021.08.07 |
---|---|
[프로그래머스] 2018 카카오 블라인드 - [1차] 추석 트래픽 (0) | 2021.07.16 |
[프로그래머스] 2020 카카오 문자열 압축 (0) | 2021.07.11 |
[프로그래머스] 2019 카카오 오픈채팅방 (1) | 2021.07.08 |
[프로그래머스] 2021 카카오 메뉴 리뉴얼 (1) | 2021.07.04 |