[Level1] 크레인 인형 뽑기 게임

Quesuemon·2021년 3월 25일
0

코딩테스트 준비

목록 보기
1/111

🛠 문제

2019 카카오 개발자 겨울 인턴십
https://programmers.co.kr/learn/courses/30/lessons/64061


👩🏻‍💻 해결 방법

우선 board 배열을 재정렬 하기 위한 new_board(1열을 1행으로)를 선언하였다
그리고 moves만큼 for문을 돌며 차례차례 new_board를 방문해주었고,
뽑은 인형(doll)과 stack[-1]이 일치한다면 stack[-1]을 pop해주고 사라진 인형 개수(+2)를 더해주었다
stack이 비어있거나 뽑은 인형과 stack[-1]이 불일치했을 경우, stack에 인형을 넣어주었다
개인적으로 좋은 풀이라고는 생각하지 않는다...

소스코드

def solution(board, moves):
    answer = 0
    new_board = [[] for _ in range(len(board))]
    stack = []
    for j in range(len(board)):
        for i in range(len(board)):
            if board[i][j] != 0:
                new_board[j].append(board[i][j])
    
    for m in moves:
        if len(new_board[m-1]) == 0: continue
        doll = new_board[m-1].pop(0)
        if len(stack) > 0 and doll == stack[-1]:
            stack.pop()
            answer += 2
        else:
            stack.append(doll)
    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

0개의 댓글