값 n이 있다고 가정합니다. 길이가 n인 모든 거꾸로 된 숫자를 찾아야 합니다. 매듭을 지을 때 거꾸로 된 숫자는 180도 뒤집었을 때 똑같이 나타나는 숫자입니다.
따라서 입력이 n =2와 같으면 출력은 ['11', '69', '88', '96']이 됩니다.
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
-
함수 middle() 을 정의하십시오. 시간이 걸립니다.
-
x가 0이면
-
빈 문자열의 목록을 반환
-
-
x가 1과 같으면
-
요소 0, 1, 8의 새 목록을 반환
-
-
ret :=새 목록
-
중간 :=중간(x − 2)
-
중간에 각 m에 대해 수행
-
x가 n과 같지 않으면
-
ret 끝에 삽입("0" 연결 m 연결 "0")
-
-
ret 끝에 삽입("1" 연결 m 연결 "1")
-
ret 끝에 삽입("6" 연결 m 연결 "9")
-
ret 끝에 삽입("8" 연결 m 연결 "8")
-
ret 끝에 삽입("9" 연결 m 연결 "6")
-
-
리턴 렛
-
기본 방법에서 다음을 수행하십시오 -
-
n이 0이면
-
새 목록 반환
-
-
그렇지 않으면 middle(n)
의 정렬된 목록을 반환합니다.
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
예시
class Solution: def solve(self, n): if not n: return [] def middle(x=n): if not x: return [""] if x == 1: return list("018") ret = [] mid = middle(x - 2) for m in mid: if x != n: ret.append("0" + m + "0") ret.append("1" + m + "1") ret.append("6" + m + "9") ret.append("8" + m + "8") ret.append("9" + m + "6") return ret return sorted(middle()) ob = Solution() print(ob.solve(2))
입력
2
출력
['11', '69', '88', '96']