Search

[백준 1490] 자리수로 나누기

[백준 1490] 자리수로 나누기

Tip

모든 자릿수로 나누어 떨어진다 = 모든 자릿수의 최소공배수로 나누어 떨어진다
math.lcm() 사용
원래 숫자 뒤에 새롭게 숫자가 붙어 갱신될 숫자의 규칙성
n + 0~9 : cnt = 1
n + 00 ~ 99 : cnt = 2
n + 000 ~ 999 : cnt = 3
len(0 ~ 10 ** cnt)
int(n + '0' * (cnt - len(str(i))) + str(i))

풀이 소스 코드

import sys, math si = sys.stdin.readline n = si().rstrip() nums = [] for i in n: if i != '0': nums.append(int(i)) # 모든 자릿수로 나누는 과정을 최소화하기 위해 최소공배수 개념 사용 for i in range(1, len(nums)): nums[0] = math.lcm(nums[0], nums[i]) # 최소공배수로 나누어 떨어진다면(모든 자릿수로 나누어 떨어진다면) if int(n) % nums[0] == 0: print(int(n)) else: # 아닌 경우 원래 수에 추가적으로 숫자를 차례대로 붙여주며 검사 cnt = 1 ok = False while True: for i in range(0, 10 ** cnt): if int(n + '0' * (cnt - len(str(i))) + str(i)) % nums[0] == 0: result = int(n + '0' * (cnt - len(str(i))) + str(i)) print(result) ok = True break if ok == True: break cnt += 1
Python