-
백준 1526번 python 가장 큰 금민수Algorithm/Baekjoon 2022. 4. 19. 15:52
https://www.acmicpc.net/problem/1526
문제
금민수는 어떤 수가 4와 7로만 이루어진 수를 말한다.
N이 주어졌을 때, N보다 작거나 같은 금민수 중 가장 큰 것을 출력하는 프로그램을 작성해라.
----------
입력
첫째 줄에 N이 주어진다. N은 4보다 크거나 같고 1,000,000보다 작거나 같은 자연수이다.
-------
출력
첫째 줄에 N보다 작거나 같은 금민수 중 가장 큰 것을 출력한다.
------
간결한 답:
n=input() while True: for i in n: if i not in'47': n=str(int(n)-1) break else: #for문이 break 등으로 끊기지 않고, 끝까지 수행 되었을 때 수행하는 코드는 else문에 담는다. print(n) break
-------------
답(내가 푼 것):
n=input() nI=int(n) res=0 for i in range(len(n)): # m자리수가 들어올 때 최대 m만큼 반복(break문 있기 때문) nL = len(str(nI)) # 자리수 파악 n4 = int('4'*nL) # 같은 자리수 중 가장 작은 금민수 if nI < n4: # 가장 작은 금민수보다 작으면 res += int('7'*(nL-1)) # 더 이상 볼 필요 없이 7이 (자리수-1)개 break else: if nI>=int('7'+'4'*(nL-1)): # 맨 앞에 7이 오고 가장 작은 금민수보다 크거나 같냐 판별 nI -= 7*10**(nL-1) res+=7*10**(nL-1) else: nI -= 4*(10**(nL-1)) res+= 4*(10**(nL-1)) print(res)
나름 한 시간 동안 고민하여 풀었는데 쉬운 답을 보니 회의감이 조금 들긴했지만,
큰 수가 들어왔을 때 성능이 훨씬 좋다는 것에 위안을 삼았다..ㅠ
'Algorithm > Baekjoon' 카테고리의 다른 글
[백준 9020번 python] 골드 바흐의 추측 (0) 2022.09.05 백준 1920번 수 찾기 파이썬 python (0) 2022.04.29 [백준 파이썬 1259번] 팰린드롬수 알고리즘 python (0) 2022.04.14 [백준 파이썬 1225번] 이상한 곱셈 알고리즘 python (0) 2022.04.14 [백준 파이썬 1100번] 하얀칸 알고리즘 python (0) 2022.04.13