두 개의 문자열 s, t가 있고 또 다른 양수 n이 주어진다고 가정하면 시퀀스 A의 n번째 항을 반환해야 합니다. 여기서 −
- A[0] =s
- A[1] =t
- A[n] =A[n - 1] + A[n - 2] n이 짝수일 때, 그렇지 않으면 A[n] =A[n - 2] + A[n - 1].
예를 들어, s ="a"이고 t ="b"인 경우 시퀀스 A는 − ["a", "b", "ba"("a" + "b"), "bba"( "ㄴ" + "바"), "바바" ("바" + "바")]
따라서 입력이 s ="pk", t ="r", n =4와 같으면 출력은 "rrpkrpk"가 됩니다.
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
- n이 0과 같으면
- 반환
- 그렇지 않고 n이 1과 같을 때
- 반환
- a :=s, b :=t
- 2~n 범위의 i에 대해 다음을 수행합니다.
- i mod 2가 0과 같으면
- c :=b 연결
- 그렇지 않으면
- c :=b 연결
- a :=b
- b :=c
- i mod 2가 0과 같으면
- 반환 c
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
예
class Solution: def solve(self, s, t, n): if n == 0: return s elif n == 1: return t a = s b = t for i in range(2, n+1): if i%2 == 0: c = b + a else: c = a + b a = b b = c return c ob = Solution() print(ob.solve("pk", "r", 4))
입력
"pk", "r", 4
출력
rrpkrpk