[PYTHON/파이썬] 1526 가장 큰 금민수 - while

https://www.acmicpc.net/problem/1526

 

1526번: 가장 큰 금민수

첫째 줄에 N이 주어진다. N은 4보다 크거나 같고 1,000,000보다 작거나 같은 자연수이다.

www.acmicpc.net

문제풀이

  • 버튼을 두고 True/False을 왔다갔다 하며 while을 제어한다.
  • 버튼을 킨 상태로 시작(button = True)
  • wihle문 시작
  • N을 문자열로 바꾸고 하나씩 4와 7이 모두 없는지 확인한다.
    • 없으면 버튼을 끈다.(button = False)
    • n을 하나씩 감소한다.(조건에 맞는 n을 찾기위해)
  • 버튼을 끄지 않은 상태로 N이 성립되면 N을 출력하고 while문을 종료한다.

soltuion - 성공

import sys
N = int(sys.stdin.readline().strip())

while True:
    # 1. 버튼을 True라고 기본값을 설정.
    button = True
    # 2. N을 문자열로 만든 다음 하나씩 순회
    for i in str(N):
        # 3. 4와 7이 없으면  / 3-1. 4 또는 7 중 하나만 있으면 다음 인덱스 순회 / 3-1-1. 모든 인덱스를 순회하여 4와 7 모두 있으면 button은 True상태
        if i != '4' and i != '7':
            # 4. 버튼 False로 끄고 N-1을 해줌 # 3-2. 4 또는 7 중 하나만 있기 때문에 버튼 False 끄고 N-1
            button = False
            N -= 1
    # 5. 버튼이 False이니깐 다시 1번으로 돌아감 / 3-3. 버튼이 False이니깐 다시 1번으로 돌아감 / 3-1-2. 버튼이 True임으로 N을 출력하고 while문을 빠져나간다.
    if button:
        print(N)
        break

댓글