양의 정수 n이 주어졌다고 가정해 보겠습니다. 이 값은 우리가 가지고 있는 금액을 센트(cents) 단위로 나타낸 것입니다. 이때 이 숫자를 사람이 읽기 쉬운 통화 형식, 즉 달러와 센트를 구분하고 천 단위마다 콤마가 들어간 형태로 변환하는 것이 이번 문제의 목표입니다.
예를 들어 입력값이 n = 123456이라면, 출력은 "1,234.56"이 되어야 합니다.
문제 해결 접근 방법
이 문제는 다음 단계를 따라 해결할 수 있습니다.
- 입력받은 숫자 n을 문자열로 변환합니다.
- 문자열의 길이가 2보다 작다면, '0.0' 뒤에 원래 값을 붙여 반환합니다. (예: 5 → "0.05")
- 문자열의 길이가 정확히 2라면, '0.' 뒤에 원래 값을 붙여 반환합니다. (예: 50 → "0.50")
- 그 외의 경우, 마지막 두 자리를 제외한 앞부분을 달러(currency) 부분으로 분리하고, 마지막 두 자리 앞에는 소수점('.')을 붙여 센트 부분으로 만듭니다.
- 달러 부분의 길이가 3보다 큰 동안, 뒤에서 세 자리씩 잘라내어 콤마(',')와 함께 결과 문자열 앞에 추가합니다.
- 반복이 끝나면 남은 달러 부분과 지금까지 만든 문자열을 합쳐 최종 결과를 반환합니다.
구현 예시
class Solution:
def solve(self, n):
cents = str(n)
if len(cents) < 2:
return '0.0' + cents
if len(cents) == 2:
return '0.' + cents
currency = cents[:-2]
cents = '.' + cents[-2:]
while len(currency) > 3:
cents = ',' + currency[-3:] + cents
currency = currency[:-3]
cents = currency + cents
return cents
ob = Solution()
print(ob.solve(523644))
입력
523644
출력
5,236.44
참고: 파이썬 내장 포매팅을 활용한 더 간단한 방법
위 알고리즘은 문자열 조작의 원리를 이해하는 데 좋은 연습이 되지만, 실무에서는 파이썬의 내장 문자열 포매팅 기능을 사용하면 한 줄로 같은 결과를 얻을 수 있습니다.
def solve(n):
return f"{n / 100:,.2f}"
print(solve(523644)) # 출력: 5,236.44
센트 값을 100으로 나누어 달러 단위로 바꾼 뒤, 포맷 지정자 :,.2f를 적용하면 천 단위 콤마와 소수점 둘째 자리까지 자동으로 처리됩니다. 코딩 테스트에서는 직접 구현 방식을, 실제 프로젝트에서는 내장 포매팅 방식을 활용하는 것이 효율적입니다.