숫자 n이 있다고 가정하고 숫자의 아무 곳에나 5를 삽입하여 얻을 수 있는 최대 숫자를 찾아야 합니다.
따라서 입력이 n =834와 같으면 출력은 8534가 됩니다.
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
-
n> 0이면
-
s :=n을 문자열로
-
k :=빈 문자열
-
c :=거짓
-
s의 각 문자 i에 대해 수행
-
i <5이고 c가 False이면
-
k :=k 연결 "5" 연결 i
-
c :=참
-
-
그렇지 않으면
-
k :=k 연결 i
-
-
-
k를 정수로 반환
-
-
그렇지 않으면
-
k :=빈 문자열
-
s :=|n| 문자열로
-
c :=거짓
-
s의 각 문자 i에 대해 수행
-
i> 5이고 c가 False와 같으면
-
k :=k 연결 "5" 연결 i
-
c :=참
-
-
그렇지 않으면
-
k :=k 연결 i
-
-
-
c가 거짓이면
-
k :=k "5" 연결
-
-
-
리턴(-k)
예시
더 나은 이해를 위해 다음 구현을 살펴보겠습니다.
def solve(n):
if n > 0:
s = str(n)
k = ""
c = False
for i in s:
if int(i) < 5 and c == False:
k += "5" + i
c = True
else:
k += i
return int(k)
else:
k = ""
s = str(abs(n))
c = False
for i in s:
if int(i) > 5 and c == False:
k += "5" + i
c = True
else:
k += i
if not c:
k += "5"
return int("-" + k)
n = 834
print(solve(n)) 입력
834
출력
8534