프로그래머스 - 크레인 인형뽑기 게임

KimRiun·2021년 5월 15일
0

사용 언어: python 3.7.4

❓ Problem

문제 설명

문제

프로그래머스 - 크레인 인형뽑기 게임

🚩 Solution

1. 접근법

👉 아이디어 Point
1. board는 오른쪽으로 90도 회전해서 사용
2. moves-1에 적힌 값은 board의 행
3. 스택 arr는 리스트로 구현

👉 코드 동작 과정

 for m in moves:

 	moves로 myboard 해당 행으로 이동, myboard에서 0보다 큰 가장 마지막 값 l 뽑기
 	if arr의 마지막 값과 l 값이 같으면: answer+=2
 	else arr로 해당값 넣기

2. 코드

# Input
board = [
    [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]]
moves = [1, 5, 3, 5, 1, 2, 1, 4]
def solution(board, moves):
    moves = [x - 1 for x in moves]

    # board 시계방향 90도 회전
    n = len(board)  # 5
    myboard = [[] for _ in range(n)]

    for i in range(n):
        for j in range(n):
            myboard[j].insert(0, board[i][j])

    # 반복시작
    arr = []
    answer = 0
    for m in moves:
        for v in reversed(range(n)):  # n-1부터 0까지
            if myboard[m][v] != 0:
                if not arr:  # empty arr 일 때
                    arr.append(myboard[m][v])
                else:
                    if arr[-1] == myboard[m][v]: # 연속된 같은 값 삭제
                        answer += 2
                        del arr[-1]
										
                    else: # 연속된 값 아님. 그냥 삽입
                        arr.append(myboard[m][v])

                myboard[m][v] = 0
                break

		return answer

# 함수 호출
solution(board, moves)

3. 결과

채점 결과

correct
아이디어 시간: 11:36 ~ 11:57
코드 짜기 시간: 11:57~ 1:13

📕 피드백

1. 검색한 내용

  1. reversed(range(n)) : n-1부터 0까지 역순으로 접근한다.

2. 실수

3. 발전 방향

4. 느낀점

코드 작성 시간이 길었다.

profile
Java, Python

0개의 댓글