연습장
16. 크레인 인형뽑기 게임 본문
맨위에서부터 뽑을 수 있으며 뽑은 인형중 같은거 2개가 될경우 사라진다.
moves 의 원소값에 따라서 0 이 아닌 숫자를 하나씩 가져오게된다.
15351214
->43113204
가 되며 연속된 숫자는 사라지게되며 0 또한 무시해도된다.
-> 43324
-> 424
즉 11과 33 이 사라졌으며 result 값은 4가 된다.
1. 빈배열에 원소들을 잘 뽑아서 넣기
2. 몇개가 터트려지는지 확인
def solution(board, moves):
answer = 0
num_list = []
# 1회 뽑는 방법
h = 0 # 높이
w = 0 # 뽑을 x 축 좌표
while True:
if board[h][w] == 0: # 0 일경우 한칸 더 내려감
h +=1
else :
num_list.append(board[h][w])
board[h][w] = 0
break
print(num_list) # 4
return answer
num_list 에 4가 들어가게 된다.
def solution(board, moves):
answer = 0
num_list = []
# 1회 뽑는 방법
h = 0
w = 0
# moves 원소만큼 뽑기를 진행
for w in moves:
# 높이를 다시 0 으로 초기화
h = 0
# 1개를 뽑을때 까지 진행
# 빈곳일경우 무한 루프에 걸리지 않도록
while h < len(board):
if board[h][w-1] == 0:
h +=1
else :
num_list.append(board[h][w-1])
board[h][w-1] = 0
break
print(num_list) ## 아래 결과
return answer
〉 | [4, 3, 1, 1, 3, 2, 4] |
새로 만든 리스트에서 터트릴수 있는 숫자 갯수를 확인한다.
방법은 같은숫자가 연속하는지 확인하면 된다.
# 2. 갯수 확인
temp = -1
for i in range(len(num_list)):
if temp == num_list[i] :
num_list = num_list[:i-1]+num_list[i+1:]
answer += 2
break
else :
temp = num_list[i]
print(num_list) # [4, 3, 3, 2, 4]
이제 위의 코드를 반복하면 되는데 모두 다 짝을 이뤄 터진다고 가정하면 전체 배열의 갯수 / 2 만큼은 반복 해야 된다.
def solution(board, moves):
answer = 0
num_list = []
# 1. 뽑기
h = 0
w = 0
# moves 원소만큼 뽑기를 진행
for w in moves:
# 높이를 다시 0 으로 초기화
h = 0
# 1개를 뽑을때 까지 진행
# 빈곳일경우 무한 루프에 걸리지 않도록
while h < len(board):
if board[h][w-1] == 0:
h +=1
else :
num_list.append(board[h][w-1])
board[h][w-1] = 0
break
# 2. 갯수 확인
# 전체 반복 횟수
for j in range(int(len(num_list)/2)):
# 임시 저장값 초기화
temp = -1
# 1회 확인
for i in range(len(num_list)):
if temp == num_list[i] :
num_list = num_list[:i-1]+num_list[i+1:]
answer += 2
break
else :
temp = num_list[i]
return answer
'프로그래머스 > 1단계' 카테고리의 다른 글
18. 햄버거 만들기 (0) | 2024.01.19 |
---|---|
17. 키패드 누르기 (0) | 2024.01.19 |
15. 이웃한 칸 (0) | 2024.01.17 |
14. 둘만의 암호 (0) | 2024.01.17 |
13. 실패율 (0) | 2023.12.16 |