Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬으로 센트 금액을 통화 형식(예: 1,234.56)으로 변환하는 프로그램

양의 정수 n이 주어졌다고 가정해 보겠습니다. 이 값은 우리가 가지고 있는 금액을 센트(cents) 단위로 나타낸 것입니다. 이때 이 숫자를 사람이 읽기 쉬운 통화 형식, 즉 달러와 센트를 구분하고 천 단위마다 콤마가 들어간 형태로 변환하는 것이 이번 문제의 목표입니다.

예를 들어 입력값이 n = 123456이라면, 출력은 "1,234.56"이 되어야 합니다.

문제 해결 접근 방법

이 문제는 다음 단계를 따라 해결할 수 있습니다.

  1. 입력받은 숫자 n을 문자열로 변환합니다.
  2. 문자열의 길이가 2보다 작다면, '0.0' 뒤에 원래 값을 붙여 반환합니다. (예: 5 → "0.05")
  3. 문자열의 길이가 정확히 2라면, '0.' 뒤에 원래 값을 붙여 반환합니다. (예: 50 → "0.50")
  4. 그 외의 경우, 마지막 두 자리를 제외한 앞부분을 달러(currency) 부분으로 분리하고, 마지막 두 자리 앞에는 소수점('.')을 붙여 센트 부분으로 만듭니다.
  5. 달러 부분의 길이가 3보다 큰 동안, 뒤에서 세 자리씩 잘라내어 콤마(',')와 함께 결과 문자열 앞에 추가합니다.
  6. 반복이 끝나면 남은 달러 부분과 지금까지 만든 문자열을 합쳐 최종 결과를 반환합니다.

구현 예시

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를 적용하면 천 단위 콤마와 소수점 둘째 자리까지 자동으로 처리됩니다. 코딩 테스트에서는 직접 구현 방식을, 실제 프로젝트에서는 내장 포매팅 방식을 활용하는 것이 효율적입니다.