숫자 N이 주어졌을 때, 해당 숫자에 포함된 자릿수가 총 몇 개인지 구하는 것이 이번 문제의 목표입니다. 먼저 예시를 통해 문제를 이해해 보겠습니다.
입력 예시 1 −
N = 891452
출력 −
6
설명 − 주어진 숫자 891452는 여섯 자리 숫자이므로 결과로 6을 반환합니다.
입력 예시 2 −
N = 0074515
출력 −
5
설명 − 맨 앞의 0은 숫자의 값에 영향을 주지 않으므로 실제 값은 74515이며, 다섯 자리 숫자이므로 출력은 5가 됩니다.
문제 해결 접근 방법
이 문제는 다음과 같은 단계로 해결할 수 있습니다.
숫자 n을 입력받습니다.
countDigits(n) 함수가 입력값 n을 받아 자릿수 개수를 계산하여 반환합니다.
숫자를 10으로 나누면서 각 자릿수를 하나씩 제거하고, 그때마다 카운터 변수를 1씩 증가시킵니다.
숫자가 0이 되면 반복을 종료하고 카운터 값을 반환합니다.
구현 예제
def countDigits(n):
ans = 0
while n:
ans += 1
n //= 10
return ans
n = 45758
print("주어진 숫자의 자릿수 :", countDigits(n))실행 결과
위 코드를 실행하면 다음과 같은 출력이 생성됩니다.
주어진 숫자의 자릿수 : 5
다른 방법들
반복문 외에도 파이썬의 내장 기능을 활용하면 더 간단하게 자릿수를 구할 수 있습니다.
1. 문자열 변환 활용
숫자를 문자열로 변환한 뒤 길이를 재는 방법으로, 가장 직관적이고 코드도 짧습니다.
n = 45758 print(len(str(n))) # 출력: 5
2. math.log10 활용
로그 함수를 이용하면 반복 없이 한 번의 연산으로 자릿수를 구할 수 있어 큰 수에서 효율적입니다.
import math n = 45758 print(math.floor(math.log10(n)) + 1) # 출력: 5
다만 log10 방식은 n이 0일 경우 오류가 발생하므로, 입력값 범위에 따라 적절한 방법을 선택하는 것이 좋습니다.