새소식

반응형
Algotithms

[백준] 3165 5

  • -
728x90
반응형

문제

  • N과 K가 주어졌을 때, N보다 크면서 5가 적어도 K번 포함되는 가장 작은 수 구하기
  • 1 <= N <= 10^15
    1 <= K <= 15

 

풀이

  • 뒤에서부터 확인해서 5가 아닌 수가 나오면 +1 하면서 5가 K개가 되는 숫자 찾기
  • 리스트 형태가 아니라 문자열 형태로 동일한 코드를 작성했는데 '시간 초과' 나왔다. 

 

N, K = map(int,input().split())
N = list(str(N+1))
cur_idx = -1       # 현재 인덱스
max_idx = len(N)   # 최대 인덱스

while True:
    if N.count('5') >= K:
        break

    # 5가 아닌 인덱스 찾기
    while N[cur_idx] == '5' and abs(cur_idx) < max_idx:
        cur_idx -= 1
    
    # 5가 아닌 인덱스 +1 하기
    N = list(str(int(''.join(N)) + 10**(abs(cur_idx)-1)))
    # 최대 인덱스 재설정
    max_idx = len(N)
 
print(''.join(N))

 

References

반응형

'Algotithms' 카테고리의 다른 글

[백준] 20546 🐜 기적의 매매법 🐜  (0) 2023.10.11
[백준] 2758 로또  (0) 2023.10.11
[백준] 20115 에너지 드링크  (0) 2023.10.10
[백준] 20364 부동산 다툼  (0) 2023.10.06
[백준] 14928 서강 그라운드  (1) 2023.10.05
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.