BOJ
[백준][python] 1526 가장 큰 금민수 ✅
winter17
2023. 2. 1. 23:31
https://www.acmicpc.net/problem/1526
1526번: 가장 큰 금민수
첫째 줄에 N이 주어진다. N은 4보다 크거나 같고 1,000,000보다 작거나 같은 자연수이다.
www.acmicpc.net
풀이 과정 1
1. 정수로 입력 값 받고 (N)
2. 완전 탐색 문제(왜? 'N은 4보다 크거나 같고 1,000,000보다 작거나 같은 자연수'라고 문제에서 명시했고 for문 돌리기에는 너무 큰 범위)라서 while문 돌리는데
3. 입력받은 N값을 string변환 후 길이를 세서 문자열 변환한 N에서 '4' 카운트한 개수와 '7' 카운트 개수를 더해서 출력 후 break
4. 3번의 조건이 맞지 않다면 N-1 한 후 조건이 참이 될 때까지 반복
N = int(input()) # 100
while True:
if len(str(N)) == str(N).count('4') + str(N).count('7'):
# 입력값 N을 string으로 형변환해서
# str(N)에 '4' + '7' 각각 카운트한 수의 합과 같다면
print(N) # 출력
break
N -= 1 # 만약 위의 조건이 맞지 않다면 -1
풀이 과정 2
1. for문으로 range범위 잡고 나머지 풀이과정은 위와 동일
2. 가장 큰 수만 찾으면 되니까 역순으로 숫자가 나오게 하는데 조건에 맞는 숫자가 나오면 break
n = int(input())
for i in range(n, 3, -1):
if len(str(i)) == str(i).count('7') + str(i).count('4'):
print(i)
break
리뷰
N을 range의 범위로 설정하고 4, 7이 들어있을때까지는 분류했는데 77, 47과 같은 숫자를 97, 71 같은 숫자들과 분리를 시키지 못해서
구글링 했던 문제... 브론즈1인데 너무 어려웠다ㅠ
코드 리뷰할 때 다양한 풀이를 봤는데 일단 내가 읽기에는 이 코드가 가장 보기 쉬웠다