기울어진 암호문 해독
originalText
은 고정된 수의 행encodedText
을 갖는 행렬의 도움으로 문자열rows
에 대한 기울어진 전치 암호를 사용하여 인코딩됩니다.originalText
가 왼쪽 위에서 오른쪽 아래로 첫 번째로 배치됩니다.originalText
끝에 도달할 때까지 파란색 셀이 먼저 채워진 다음 빨간색 셀, 노란색 셀 순으로 채워집니다. 화살표는 셀이 채워지는 순서를 나타냅니다. 모든 빈 셀은 ' '
로 채워집니다. 열 수는 originalText
를 채운 후 가장 오른쪽 열이 비어 있지 않도록 선택됩니다.encodedText
는 행렬의 모든 문자를 행 방향으로 추가하여 형성됩니다.파란색 셀의 문자가 먼저
encodedText
에 추가된 다음 빨간색 셀에 추가되고 마지막으로 노란색 셀에 추가됩니다. 화살표는 셀이 액세스되는 순서를 나타냅니다.예를 들어
originalText = "cipher"
및 rows = 3
인 경우 다음과 같은 방식으로 인코딩합니다.파란색 화살표는
originalText
가 매트릭스에 배치되는 방식을 나타내고 빨간색 화살표는 encodedText
가 형성되는 순서를 나타냅니다. 위의 예에서 encodedText = "ch ie pr"
.인코딩된 문자열
encodedText
과 행 수rows
가 주어지면 원래 문자열originalText
을 반환합니다.참고:
originalText
에는 후행 공백이 없습니다' '
. 가능한 테스트 사례가 하나만 있도록 테스트 사례가 생성됩니다originalText
.예 1:
입력: encodingText = "ch ie pr", 행 = 3
출력: "암호"
설명: 이것은 문제 설명에 설명된 것과 동일한 예입니다.
예 2:
입력: encodingText = "iveo eed l te olc", 행 = 4
출력: "나는 leetcode를 사랑합니다"
설명: 위 그림은 originalText를 인코딩하는 데 사용된 행렬을 나타냅니다.
파란색 화살표는 어떻게 encodingText에서 originalText를 찾을 수 있는지 보여줍니다.
예 3:
입력: encodingText = "코딩", 행 = 1
출력: "코딩"
설명: 행이 1개뿐이므로 originalText와 encodingText는 모두 동일합니다.
제약:
0 <= encodedText.length <= 106
encodedText
는 영문 소문자와 ' '
로만 구성됩니다. encodedText
는 후행 공백이 없는 일부originalText
의 유효한 인코딩입니다. 1 <= rows <= 1000
originalText
. 해결책:
class Solution:
def decodeCiphertext(self, encodedText: str, rows: int) -> str:
m, n = rows, len(encodedText) // rows
op = ""
for i in range(n):
for j in range(m):
if i + j < n:
op += encodedText[(n + 1) * j + i]
return op.rstrip()
Reference
이 문제에 관하여(기울어진 암호문 해독), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/theabbie/decode-the-slanted-ciphertext-3fjd텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)