📑 문제
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
📝 풀이
첫 번째 풀이
예전에 풀이한 것이 있어서 가져와봤는데 정말 굳이스러운 풀이이다. 그냥 슬쩍 보고 넘어가자.
1) 멀쩡히 잘 있는 보드를 옆으로 돌려버리기 🤷♀️
2) 보드에 있는 0을 없애버리기 🤷♀️
3) 인형을 집어넣고 바구니의 맨 끝 인형과 같은 지 판단하기 🤷♀️
# [[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]]
import numpy as np
def solution(board, moves):
new_board = [[0 for col in range(len(board))] for row in range(len(board))]
for i in range(len(board)):
for j in range(len(board)):
new_board[i][j] = board[j][i]
board = new_board
answer = 0
doll = []
for i in range(len(board)):
board[i] = [item for item in board[i] if item != 0] # 0 없애기
for move in moves:
if len(board[move-1]) == 0:
continue
pick = board[move-1].pop(0)
doll.append(pick)
if len(doll)>1 and doll[-1] == doll[-2]:
doll = doll[:-2]
answer += 2
return answer
두번째 풀이
코드 길이만 보아도 많이 최적화되었다는 게 느껴진다. 성장했다 나자신 👏 👏 👏
def solution(board, moves):
answer = 0
basket = []
for move in moves:
for line in board:
if line[move-1] == 0:
continue
else:
pick = line[move-1]
if len(basket) >0 and basket[-1] == pick:
answer += 2
basket.pop()
else:
basket.append(pick)
line[move-1] = 0
break
return answer
728x90
'💡코딩테스트 > 프로그래머스' 카테고리의 다른 글
[python | 프로그래머스] LV.2 게임 맵 최단거리 (0) | 2023.04.05 |
---|---|
[python | 프로그래머스] LV 2. [1차] 프렌즈4블록 (0) | 2023.04.04 |
[프로그래머스 | 2020 카카오 인턴십] 키패드 누르기 (0) | 2023.02.07 |
[프로그래머스 | 2019 카카오 개발자 겨울 인턴십] 튜플 (0) | 2023.02.07 |
[프로그래머스 | 2021 카카오 채용연계형 인턴십] 숫자 문자열과 영단어 (0) | 2023.02.07 |