숫자 n이 주어졌을 때, 이 숫자를 천 단위마다 콤마(",")로 구분된 문자열 형태로 변환하는 프로그램을 만들어 보겠습니다.
예를 들어 입력값이 n = 512462687이라면, 출력 결과는 "512,462,687"이 되어야 합니다.
문제 해결 접근 방법
이 문제는 다음과 같은 단계로 해결할 수 있습니다.
- 숫자 n을 문자열로 변환합니다.
- 변환된 문자열을 뒤집습니다. (뒤에서부터 세 자리씩 묶기 위함)
- 결과를 담을 빈 문자열을 준비합니다.
- 뒤집힌 문자열을 처음부터 끝까지 순회하며, 인덱스가 3의 배수이고 0이 아닌 위치마다 콤마를 삽입합니다.
- 완성된 문자열을 다시 뒤집어 원래 순서로 복원합니다.
구현 예제 (Python)
위 로직을 파이썬 코드로 구현하면 다음과 같습니다.
def solve(n):
res = str(n)
res = res[::-1]
ans = ""
for i in range(len(res)):
if i % 3 == 0 and i != 0:
ans += ','
ans += res[i]
ans = ans[::-1]
return ans
n = 512462687
print(solve(n))실행 결과
입력:
512462687
출력:
512,462,687
더 간단한 방법: 파이썬 내장 포맷팅 활용하기
사실 파이썬에서는 위와 같이 직접 구현하지 않아도 내장 기능만으로 같은 결과를 얻을 수 있습니다.
n = 512462687
# f-string 사용
print(f"{n:}")
# format() 함수 사용
print(format(n, ","))두 방법 모두 512,462,687을 출력합니다. 실무에서는 코드가 간결하고 가독성이 좋은 f-string 방식(f"{n:}")을 가장 많이 사용합니다.
정리
- 직접 구현 방식은 문자열 뒤집기를 활용해 뒤에서부터 세 자리마다 콤마를 삽입하는 알고리즘입니다.
- 내장 포맷팅(
f"{n:}")을 사용하면 한 줄로 동일한 결과를 얻을 수 있습니다. - 알고리즘 학습 목적이라면 직접 구현 방식을, 실제 프로젝트라면 내장 포맷팅을 활용하는 것이 효율적입니다.