백준 06378번 / 6378번 문제 링크
문제 이름 : 디지털 루트
주 언어 : Python
태그 : 수학 / 구현 / 문자열 / 임의 정밀도&큰 수 연산
solved.ac 등급 : Bronze III (2022/11/24 확인)
문제 보기
문제 :
양의 정수 $N$의 디지털 루트를 구하려면 $N$을 이루고 있는 모든 자리수를 더해야 한다.
이때, 더한 값이 한 자리 숫자라면, 그 수가 $N$의 디지털 루트가 된다.
두 자리 이상 숫자인 경우에는 다시 그 수를 이루고 있는 모든 자리수를 더해야 하며, 한 자리 숫자가 될 때까지 반복한다.
$24$의 디지털 루트를 구해보자. $2 + 4 = 6$이다. $6$은 한 자리 숫자이기 때문에, $24$의 디지털 루트는 $6$이 된다.
$39$의 경우에는 $3 + 9 = 12$이기 때문에, 한 번 더 더해야 한다. 따라서, $1 + 2 = 3$이 디지털 루트가 된다.
양의 정수 $N$이 주어졌을 때, 그 수의 디지털 루트를 구하는 프로그램을 작성하시오.
입력 :
한 줄에 하나씩 양의 정수가 주어진다. 입력의 마지막 줄은 $0$으로 나타낸다. 수는 최대 $1000$자리이다.
출력 :
입력으로 주어진 양의 정수의 디지털 루트를 한 줄에 하나씩 주어진 순서대로 출력한다.
문자열로 입력받은 뒤, 해당 문자열에서 순서대로 첫번째 글자를 숫자로 바꿔서 더해주고, 두번째 글자를 숫자로 바꿔서 더해주고...이런 방식으로 각 자리를 더해줍니다.
다 합친 값이 $9$를 초과한다면, 이 과정을 다시 반복해줍니다.
문자열을 입력 받아서 자릿수의 합을 내놓는 함수를 만들어주면 쉽게 반복할 수 있습니다.
문자열 상태로 자릿수의 합을 계산해야 하므로 꼭 str 함수를 씌워줘서 문자열로 만드는걸 잊지 말아줍니다.
$10$이상의 모든 자연수 $N$에 대하여 원래 자릿수의 합이 $N$보다 작으므로 안심하고 계속 반복해서 쓸 수 있습니다.
-번째 푼 문제 (2022/--/--)