Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

파이썬에서 두 통화의 환율을 알아내는 프로그램

<시간/>

세 개의 배열이 주어졌다고 가정합니다. 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
  • 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