[프로그래머스] Lv.1 크레인 인형뽑기 게임

Tony Kim·2022년 1월 12일
0
post-thumbnail

[프로그래머스]

Lv.1 크레인 인형뽑기 게임

1. 문제

2차원 배열로 인형들 정보와 1차원 배열로 인형뽑기의 움직임을 input으로 받고 똑같은 인형이 뽑힐시 사라지는데 사라진 인형의 총 개수를 output으로 return하는 문제

2. 풀이

2차원 배열의 값들을 반복문으로 접근하여 뽑은 인형을 list에 추가해서
다시 반복문으로 뽑힌 인형들을 확인하며 숫자가 같으면 삭제하는 방식.

3. 코드

나의 풀이

def solution(board, moves):
    answer = [];
    for i in range(len(moves)):
        p = moves[i]-1
        for j in range(len(board)):
            if board[j][p] != 0:
                answer.append(board[j][p])
                board[j][p] = 0
                break
    k = 0;
    cnt = 0;
    while k < len(answer)-1:
        if answer[k] == answer[k+1]:
            del answer[k]
            del answer[k]
            cnt = cnt + 2
            if k != 0:
                k = k-1
        else:
            k = k + 1
    return cnt

모범코드

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

반성)

  • stack으로 같은 숫자를 확인하고 ([-1] == [-2]), 제거하는 (.pop(-1)) 방식을 사용하지 않은 것
  • 2차원 배열 접근방법
  • del a[index] 확실히 알아두기
  • !=
profile
Back-end-dev

0개의 댓글