문제 설명
프로그래머스 레벨 1의 문제입니다.
간단하게 요약하자면 위와 같이 인형 뽑기 기계가 있습니다. 이런 인형 뽑기 기계는 N * N의 크기로 이루어져 있으며 뽑을 가로 칸을 입력하면 무조건 뽑게 되어있으면 뽑은 인형은 옆의 바구니로 이동합니다. (바구니의 크기는 제한 없음)
바구니에서 만약 같은 종류의 인형이 연속으로 겹쳤다면 인형은 사라집니다.
이때 사라진 인형의 수를 구하는 문제입니다.
여기서 개인적으로 헷갈렸던 부분은 이차원 배열 board
의 행과 열이 헷갈렸습니다.
위의 예제로 2차원 배열을 재 구성 해보면
[0,0,0,0,0]
[0,0,1,0,3]
[0,2,5,0,1]
[4,2,4,4,2]
[3,5,1,3,1]
이런식으로 인형이 구성됩니다. 저는 반대로 풀어서 두번 풀었습니다.
풀이
def solution(board, moves):
done = []
answer = 0
for move in moves:
for b in board:
if b[move - 1] != 0:
if len(done) > 0 and done[-1] == b[move - 1]:
answer += 2
done.pop()
else:
done.append(b[move - 1])
b[move - 1] = 0
break
return answer
변수 설명
board: 매개변수로 받은 초기 인형의 상태입니다
moves: 크레인이 움직인 위치입니다.
answer: 사라진 인형의 개수 입니다.
done: 뽑은 인형입니다
간단 설명
크레인이 움직임들을 순회하며 가장 위에 있는 인형을 뽑습니다. 만약 바구니의 가장 위 인형과 같은 종류라면 바구니의 가장 위 인형을 삭제한 후 2개의 인형을 사라지게 합니다. (방금 뽑은 인형 + 바구니의 가장 위 인형)
'개발 > 알고리즘 문제 풀이' 카테고리의 다른 글
[프로그래머스] 폰켓몬 (0) | 2021.01.28 |
---|---|
[프로그래머스] 튜플 (0) | 2021.01.27 |
[프로그래머스] 전화번호 목록 (0) | 2021.01.27 |
[프로그래머스] 예상 대진표 (0) | 2021.01.27 |
[프로그래머스] 위장 (0) | 2021.01.27 |