2020-04-14 알고리즘 문제풀이 스터디
def solution(board, moves):
box = []
result = 0
for move in moves:
for yul in board:
find = yul[move-1]
if find != 0:
if len(box) != 0 and box[-1] == find:
box.pop()
result += 2
else:
box.append(find)
yul[move-1] = 0
break
answer = result
return answer
def solution(board, moves):
box = []
result = 0
for move in moves: # 크레인의 위치 값들을 순회한다.
for yul in board: # 인형이 담긴 판을 순회한다. (yul = board의 열 값)
find = yul[move-1] # 변수 find에 크레인의 위치를 저장
if find != 0: # 만약 크레인이 가리키는 위치에 인형이 있으면
# 만약 현재 찾은 인형과, box 배열에 가장 최근에 넣은 인형이 같으면
if len(box) != 0 and box[-1] == find:
box.pop() # box 배열에 가장 최근에 넣은 인형을 삭제
result += 2 # result 변수에 삭제한 인형의 개수를 저장
else:
# 그렇지 않으면 box에 인형을 삽입
box.append(find)
# 크레인이 인형을 꺼낸 자리는 빈 곳으로 만든다.
yul[move-1] = 0
# board 순회 종료
break
answer = result
return answer
스택의 개념을 떠올리면서 문제를 풀었다.
def solution(participant, completion):
hash_par = {}
no_run = ''
for c in completion:
hash_par[c] = 0
for c in completion:
hash_par[c] += 1
for p in participant:
if p in hash_par and hash_par[p] > 0:
hash_par[p] = hash_par[p] - 1
elif p in hash_par and hash_par[p] == 0:
no_run = p
elif p not in hash_par:
no_run = p
return no_run
def solution(participant, completion):
# 완주자 명단 값을 키값으로 담는 dictionary 변수
hash_par = {}
# 완주하지 못한 사람을 담는 string 변수
no_run = ''
# dictionary hash_par를 완주자 명단을 키 값으로 하여 각각 0으로 초기화.
for c in completion:
hash_par[c] = 0
# 완주자 명단을 다시 순회하여 hash_par에 해당 키값마다 +1 (동명이인 체크)
for c in completion:
hash_par[c] += 1
# 참가자 명단 순회
for p in participant:
# 참가자 p가 완주자 명단에 존재하고, 그 값이 0보다 크면
if p in hash_par and hash_par[p] > 0:
# 해당 키값의 값을 -1
hash_par[p] = hash_par[p] - 1
# 참가자 p가 완주자 명단에 존재하고, 그 값이 0이면
elif p in hash_par and hash_par[p] == 0:
# 완주하지 못한 동명이인
no_run = p
# 참가자 p가 완주자 명단에 존재하지 않으면
elif p not in hash_par:
# 완주하지 못한 사람
no_run = p
return no_run
해쉬 맵의 개념을 생각하고 문제를 풀었다.