[문제]
이번 문제는 길기도 하고 문제에 그림이 첨부되어 있어 링크로 대체하도록 하겠습니다!
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
[내 풀이]
def check(arr):
count =0
if(arr[-1] == arr[-2]):
arr.pop(-1)
arr.pop(-1)
count+=2
return count
def solution(board, moves):
answer = 0
arr = []
for i in moves:
for k in range(len(board)):
if board[k][i-1] != 0:
arr.append(board[k][i-1])
board[k][i-1] = 0
if len(arr)>1:
answer += check(arr)
break
else:
continue
return answer
어.. 사실 이번 문제는 정말 문제설명의 그대로 구현하면 되는 문제입니다. 신경 써야 할 점이라면 중복숫자의 삭제시점정도라고 생각합니다. 아무튼 어려운 문제는 아니었던 것 같습니다.
처음에 구현했을때는 숫자를 뽑아서 저장할 때마다 검사 및 삭제를 하지 않고 다 쌓은 뒤 삭제를 진행하였습니다.
하지만 그렇게 하다보니 약간의 인덱싱 문제가 발생하여 추가할 때마다 검사 및 삭제를 해주도록 하였습니다.
arr의 길이가 1보다 길 경우, 즉 비교가 가능해졌을때 맨 뒤요소와 그 이전요소를 비교 후 삭제를 진행하였습니다.
자료구조 스택을 생각하시면 편할것 같습니다~
'문제풀이 > 프로그래머스' 카테고리의 다른 글
[Python]키패드 누르기 (0) | 2023.05.11 |
---|---|
[Python]대충 만든 자판 (0) | 2023.05.09 |
[Python] 완주하지 못한 선수 (0) | 2023.05.02 |
[Python] 체육 (0) | 2023.05.02 |
[JAVA] 압축 (0) | 2023.03.01 |