ABC150 C - Count Order를 풀었다
7186 단어 AtCoder파이썬AtCoderBeginnerContest
이번에는 문제를 알기 쉽다.
언제나 잊어버려, permutation 어떻게 그리는 거야?
참고로, 전 탐색해 보았다.
2 < N < 8 이므로 살아났다.
CountOrder.py
n = int(input())
P = list(map(int,input().split()))
Q = list(map(int,input().split()))
P = "".join(list(map(lambda x:str(x),P)))
Q = "".join(list(map(lambda x:str(x),Q)))
from itertools import permutations
i = 1
dic={}
for nums in permutations(range(1,n+1)):#O(40000)
#print(nums)
nums = list(nums)
nums = "".join(list(map(lambda x:str(x),nums)))#O(8)
dic[nums] = i
i += 1
print(abs(dic[P]-dic[Q]))#114ms
permutation은 사전순으로 나온다.
그래서 출력과 무엇을 출력했는지를 기록하는 i가 있으면
테이블은 간단하게 할 수 있다.
후에는 빼기뿐이다!!
그럼. . 재챌린지
abc150c.py
N = int(input())
P = list(input().split())
P = "".join(P)
Q = list(input().split())
Q = "".join(Q)
from itertools import permutations
lis = []
for i in permutations(map(str,range(1,N+1)),N):
lis.append("".join(i))
print(abs(lis.index(P)-lis.index(Q)))#40ms
조금 심화할 수 있었을지도.
Reference
이 문제에 관하여(ABC150 C - Count Order를 풀었다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/AKpirion/items/9bf5516383e12d6d34ac텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)