728x90
https://school.programmers.co.kr/learn/courses/30/lessons/150366
# 실패
def solution(commands):
result = []
answer = [['' for _ in range(50)] for _ in range(50)]
m = []
for command in commands:
inp = command.split();
if inp[0] == "UPDATE":
if len(inp) == 4:
i = -1
len_m = len(m)
if len_m > 0:
for i in range(len_m):
if (inp[1], inp[2]) in m[i]:
break
for ii in m[i]:
answer[int(ii[0])-1][int(ii[1])-1] = inp[3]
else:
answer[int(inp[1])-1][int(inp[2])-1] = inp[3]
else:
for a in range(50):
answer[a] = ','.join(answer[a]).replace(inp[1], inp[2]).split(',')
elif inp[0] == "MERGE" and (inp[1] != inp[3] or inp[2] != inp[4]):
change = answer[int(inp[3])-1][int(inp[4])-1] if answer[int(inp[1])-1][int(inp[2])-1] == '' else answer[int(inp[1])-1][int(inp[2])-1]
answer[int(inp[3])-1][int(inp[4])-1] = change
plug = False
if (inp[1] == inp[3] and abs(int(inp[2])-int(inp[4])) > 1) or (inp[2] == inp[4] and abs(int(inp[1])-int(inp[3])) > 1):
plug = True
if len(m) == 0:
m.append([(inp[1],inp[2]), (inp[3],inp[4])])
elif plug == False:
pos = -1
for i in range(len(m)):
if (inp[1],inp[2]) in m[i] or (inp[3],inp[4]) in m[i]:
pos = i
if set(m[i]) & { (inp[1],inp[2]), (inp[3],inp[4]) } != {}:
m[i] = list(set(m[i] + [(inp[1],inp[2])] + [(inp[3],inp[4])]))
if pos != -1:
for ii in m[pos]:
answer[int(ii[0])-1][int(ii[1])-1] = change
elif inp[0] == "UNMERGE":
pos = 0
limit = len(m)
del_l = []
for i in range(len(m)):
if (inp[1], inp[2]) in m[i]:
del_l.append(i)
print(del_l)
for i in range(len(del_l)):
for ii in m[del_l[i]]:
if ii != (inp[1], inp[2]):
answer[int(ii[0])-1][int(ii[1])-1] = ''
print(list(reversed(del_l)))
if len(del_l) > 0:
for i in list(reversed(del_l)):
del m[i]
elif inp[0] == "PRINT":
if answer[int(inp[1])-1][int(inp[2])-1] == '':
result.append('EMPTY')
else:
result.append(answer[int(inp[1])-1][int(inp[2])-1])
return result
# 휴..
union find ? 라는 알고리즘을 사용하라고 하는데 너무 어렵다. 나중에 공부해야지
반응형
'전.py' 카테고리의 다른 글
[python] 프로그래머스 가장 많이 받은 선물 (0) | 2024.03.10 |
---|---|
[python] 프로그래머스 양궁대회 (0) | 2023.01.18 |
[python] 프로그래머스 두 큐 합 같게 만들기 (0) | 2023.01.17 |
[python] 프로그래머스 이모티콘 할인행사 (0) | 2023.01.13 |
[python] 프로그래머스 택배 배달과 수거하기 (0) | 2023.01.12 |