jyamethyst21 님의 블로그

백준 1526번 - '가장 큰 금민수' (PYTHON 풀이) 본문

CODING 💻

백준 1526번 - '가장 큰 금민수' (PYTHON 풀이)

jyamethyst21 2026. 3. 25. 00:01

문제:

N을 입력받고 1부터 N까지 비교해서 4와 7로만 이루어진 숫자 중 가장 큰 값을 출력하면 되는 문제이다.

 

 

풀이:

N = int(input())

for i in range(N, 0, -1):
    for j in str(i):
        if j != '4' and j != '7':
            break
    else:
        print(i)
        break

 

우선 1부터 N까지 비교하는 방법과 N부터 1씩 내려가는 방법이 있는데 문제는 가장 큰 값을 구하면 되므로 당연히 후자가 더 효율적일 것이다. 필자도 해당 방법을 사용하였다.

그래서 반복문을 N부터 -1씩 줄어들도록 조건을 설정하였고, 4 또는 7이 아닌 4와 7로만 이루어져있는 숫자를 찾아야 하기 때문에 이 계산을 위해 str을 활용해 문자열로 변환하였다.(일반 숫자 형태는 in을 활용해서 자릿수 비교가 안됨!) 그 다음 if문안에 각 자릿수가 4, 7 둘 다 아니면 반복문을 탈출하도록 하고, 4이거나 7이라면 else문으로 들어가서 바로 i를 출력하도록 하였다.

앞서 말한 것처럼 가장 큰 값을 구하는 것이므로 N부터 1까지 -1씩 진행될 때 첫번째 출력 값이 가장 큰 값이 될 것이다.