자료구조 및 알고리즘/프로그래머스

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

viamemine 2024. 6. 18. 19:14
728x90
반응형

문제:  https://school.programmers.co.kr/learn/courses/30/lessons/64061

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

풀이

 

문제의 풀이는 아래의 두 가지가 있습니다.

비슷한 방법입니다.

 

행렬을 transpose하는 것이 아니라, moves에서 인덱스 값을 받아와서 처리합니다.

 

def solution(board, moves):
    nrow, ncol = len(board), len(board[0])

    stack = []
    cnt = 0

    for m in moves: # [1,5,3,5,1,2,1,4]
        for i in range(nrow): # 0 1 2 3 4
            if board[i][m-1]: # moves에서 인덱스 값을 받아옴
                stack.append(board[i][m-1])
                board[i][m-1] = 0 # pop한 것 같은 효과
                break
        if len(stack) > 1:
            if stack[-2] == stack[-1]:
                stack = stack[:-2] # pop한 것 같은 효과
                cnt += 2
    return cnt

 

def solution(board,moves):
    stack = []
    cnt = 0

    for i in moves:
        for j in range(len(board)):
            if board[j][i-1] != 0:
                stack.append(board[j][i-1])
                board[j][i-1] = 0

                if len(stack) > 1:
                    if stack[-1] == stack[-2]:
                        stack.pop(-1)
                        stack.pop(-1)
                        cnt += 2
                break
    return cnt
728x90