문제 설명
문제 해결
사라진 인형의 개수를 반환해야하는 문제이다.
일단 입출력 예부터 살펴보자.
move를 이용해서 몇 번째 행의 인형을 크레인으로 뽑을 지 결정해야 한다.
i를 이용해서 행을 아래 방향으로 순차적으로 참조해야 한다. (인형이 0이면 아무것도 안하고 넘어가므로)
인형을 뽑아주는 코드는 다음과 같이 작성할 수 있다.
def drawToy(board, moves):
bucket = []
for move in moves:
cond = True
for i in range(len(board)):
if cond:
if board[i][move-1] == 0:
pass
else:
bucket.append(board[i][move-1])
board[i][move-1] = 0
cond = False
python에서 list를 stack처럼 사용할 수 있는 방법이 있다.
append와 pop 함수를 사용해주는 것이다.
이제 같은 인형을 뽑았을 때 인형을 제거해주는 코드를 추가해주면 문제가 해결된다.
끝에 있는 원소 2개의 값이 무엇인지 확인해야하므로 인덱스를 역순으로 참조한다.
바구니에 들어 있는 인형이 2개 이하일 때 인덱스를 참조하려고 하면 에러가 발생하니, 조건을 하나만 추가해준다.
def solve(board, moves):
bucket = []
res = 0
for move in moves:
cond = True
for i in range(len(board)):
if cond:
if board[i][move-1] == 0:
pass
else:
bucket.append(board[i][move-1])
board[i][move-1] = 0
cond = False
if len(bucket) >=2 and bucket[-1] == bucket[-2]:
res += 2
bucket.pop()
bucket.pop()
return res
def solution(board, moves):
answer = solve(board, moves)
return answer
'Algorithm > 프로그래머스 연습 문제' 카테고리의 다른 글
프로그래머스 / 코딩 테스트 / K번째 수 (0) | 2020.12.25 |
---|---|
프로그래머스 / 코딩 테스트 / 완주하지 못한 선수 (0) | 2020.12.25 |
프로그래머스 / 코딩 테스트 / 소수 찾기 (0) | 2020.12.24 |
프로그래머스 / 코딩 테스트 / 서울에서 김서방 찾기 (0) | 2020.12.24 |
프로그래머스 / 코딩 테스트 / 문자열 다루기 기본 (0) | 2020.12.24 |