두 개의 문자열 p와 q가 있고 숫자 r이 있다고 가정하면 일부 문자를 최대 r번 시계 방향으로 이동하여 p가 q로 변환될 수 있는지 확인해야 합니다. 예를 들어 시계 방향으로 2번 이동하면 "c"가 "e"로 바뀔 수 있습니다.
따라서 입력이 p ="abc", q ="ccc", r =3과 같으면 시계 방향으로 2번 이동하여 "a"를 "c"로 만든 다음 " b"에서 "c"로 1번 시계 방향으로 이동하여 총 3번 이동합니다.
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
- 의 크기가 b의 크기와 같지 않으면
- 거짓을 반환
- k가 0과 같고 a가 b와 같지 않으면
- 거짓을 반환
- su:=0
- 0에서 크기 범위의 i에 대해
- v :=b[i]의 ASCII - [i]의 ASCII
- v>=0이면
- su :=su + v
- 그렇지 않으면
- 수 :=수 + v + 26
- su> k이면
- 거짓을 반환
- 참 반환
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
예시
class Solution: def solve(self, a, b, k): if len(a) != len(b): return False if k == 0 and a != b: return False su=0 for i in range(len(a)): v = ord(b[i])- ord(a[i]) if v>=0: su+=v else: su+=v+26 if su>k: return False return True ob = Solution() print(ob.solve("abc", "ccc", 3))
입력
"abc", "ccc", 3
출력
True