반응형
문제:
https://www.acmicpc.net/problem/18868
18868번: 멀티버스 Ⅰ
M개의 우주가 있고, 각 우주에는 1부터 N까지 번호가 매겨진 행성이 N개 있다. 행성의 크기를 알고 있을때, 균등한 우주의 쌍이 몇 개인지 구해보려고 한다. 구성이 같은데 순서만 다른 우주의 쌍
www.acmicpc.net
정답:
m, n = map(int, input().split())
array = []
result = 0
for i in range(m):
array.append(list(map(int, input().split())))
# 각 리스트 행을 크기 순서로 바꾸어 주는 이중 반복문
# ex. [12 50 31] -> [1, 3, 2]
for i in range(m):
array_sort = sorted(array[i])
temp = []
for j in array[i]:
temp.append(array_sort.index(j)+1)
array[i] = temp
# 크기 순서로 바꾸어준 리스트 행이 같으면 result + 1
for i in range(m-1):
for j in range(i+1, m):
if array[i] == array[j]:
result += 1
print(result)
풀이:
이 문제의 핵심은 각 우주의 행성 크기 순서가 같으면 같은 우주라는 것이다.
다시 말해, [1, 3, 2]와 [12, 50, 31] 이 두 우주가 있을 때 이를 행성 크기 순서로 바꾸면 [1, 3, 2]와 [1, 3, 2]로 바뀐다.
이렇게 행성 크기 순서가 같으면 같은 우주로 판단하고 출력할 결과에 +1을 해주면 된다.
리스트를 크기 순서로 바꾸어주는 코드는 구글링을 했다. 잘 숙지해놓고 있으면 한 번쯤은 써먹을 수 있을 것 같다.
반응형
'Python 코딩테스트' 카테고리의 다른 글
정렬: 백준 11650 파이썬 (0) | 2021.08.29 |
---|---|
정렬: 백준 2108 파이썬 (0) | 2021.08.29 |
정렬: 백준 11004 파이썬 (0) | 2021.08.23 |
DFS/BFS: 백준 1260 파이썬 (0) | 2021.08.18 |
DFS/BFS: 백준 2606 파이썬 (0) | 2021.08.18 |