Computer Science/자료구조

[6.8] 프로그래머스 코딩테스트 연습 - 크레인 인형뽑기 게임(9/100)

토마토. 2021. 6. 8. 14:59

코딩테스트 연습 - 크레인 인형뽑기 게임 | 프로그래머스 (programmers.co.kr)

 

코딩테스트 연습 - 크레인 인형뽑기 게임

[[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]] [1,5,3,5,1,2,1,4] 4

programmers.co.kr

 

생각중

def solution(board, moves):
    answer = 0
    #board = [[], [], [], [], []]
    #basket = []
    n = len(board)
    for i in moves:

    #board는 n*n
    #for i in moves:
      #board 라인에 하나씩 집어올리는데, 
      #만약 0이면, pass하고
      #끝까지 없어도 없으면 다시 pass한다
    #집어올린 인형은 바구니에 쌓는다. 
    #이때 만약에 두 인형이 같은 것이면, 터뜨린다(answer += 2))

    return answer

00000
00103
02501
42442
35131
# 보드의 한 원소는 층을 의미한다. 앞 인덱스가 윗층 아래로 내려올 수록 아래층
# moves는 i-1를 board 원소에 대입하면서 하면 된다. 
# board[j]로 두고, j는 0부터 n-1까지 대입할 수 있으며, 계속 0이어도 걍 pass하면 된다. 
# board[0][i-1] == 0이면
# board[1][i-1] 확인 등등

풀었다!

def solution(board, moves):
    answer = 0
    basket = []
    n = len(board)
    for i in moves:
      for j in range(0, n):
        if board[j][i-1] != 0:
          basket.append(board[j][i-1])
          board[j][i-1] = 0
          if len(basket) >= 2 and basket[-1] == basket[-2]:
            answer += 2
            del basket[-1]
            del basket[-1]
          break
        else:
          pass
#      i += 1
    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