세 개의 배열이 주어졌다고 가정합니다. curr_a, curr_b 및 conv_rate. 첫 번째 배열에는 일부 통화 이름이 포함되어 있고 두 번째 배열도 마찬가지이며 배열 conv_rate에는 항목 curr_a[i]에서 cuur_b[i]로의 변환 비율이 포함됩니다. conv_rate[i] 항목은 curr_a[i]와 curr_b[i] 간의 전환율입니다. 이제 두 개의 통화 src와 dest가 제공됩니다. 우리는 src에서 dest로의 변환 비율을 찾아야 합니다. 값을 출력으로 반환하고 가능하지 않으면 0을 반환합니다.
따라서 입력이 src ="INR", dest ="JPY", curr_a =["INR", "GBP", "EUR"], curr_b =["GBP", "EUR", "JPY"]와 같은 경우 , conv_rate =[0.009, 1.17, 129.67]이면 출력은 1.3654250999999997
이 됩니다.이 문제를 해결하기 위해 다음 단계를 따릅니다. −
- temp :=기본값으로 0을 포함하는 새 지도
- temp[src] :=1
- i :=0
- p :=참
- p와 i <=온도의 크기, do
- p :=거짓
- curr_a의 x, curr_b의 y, conv_rate의 z에 대해 다음을 수행합니다.
- temp[x] * z> temp[y]가 0이 아니면
- temp[y] :=temp[x] * z
- p :=참
- 나는 :=나는 + 1
- temp[x] * z> temp[y]가 0이 아니면
- i <=온도의 크기이면
- 반환 온도[목적지]
- 그렇지 않으면
- 반환 -1
예시
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
from collections import defaultdict def solve(src, dest, curr_a, curr_b, conv_rate): temp = defaultdict(int) temp[src] = 1 i = 0 p = True while p and i <= len(temp): p = False for x, y, z in zip(curr_a, curr_b, conv_rate): if temp[x] * z > temp[y]: temp[y] = temp[x] * z p = True i += 1 return temp[dest] if i <= len(temp) else -1 print(solve("INR", "JPY", ["INR", "GBP", "EUR"], ["GBP", "EUR", "JPY"], [0.009, 1.17, 129.67]))
입력
"INR", "JPY", ["INR", "GBP", "EUR"], ["GBP", "EUR", "JPY"], [0.009, 1.17, 129.67]
출력
1.3654251