문제
돈은 반올림 오류를 피하려고 보통 정수 센트로 저장하고, 화면에 보여 줄 때만 달러로 형식을 바꿉니다.
각 항목마다 <name> x<quantity> = <amount> 줄을 씁니다. 여기서 amount = quantity × 센트 단위 가격입니다. 항목 뒤에는 모든 줄의 합으로 Total = <amount>를 씁니다.
모든 금액은 달러, 점, 그리고 정확히 두 자리 센트로 씁니다. 예: 5 → 0.05, 1250 → 12.50.
format_invoice(names, quantities, cents)를 구현하세요.
입력
names, quantities, cents: 각 항목을 나타내는 같은 길이의 리스트.
출력
항목 줄들과 그 뒤의 합계 줄을 반환합니다.
제약 조건
0 ≤ 항목 수 ≤ 1,000
1 ≤ quantity ≤ 1,000; 0 ≤ cents ≤ 10^6
예시
입력:
cents = [250, 375]
names = ["Tea", "Cake"]
quantities = [2, 1]
예상 출력:
expected = ["Tea x2 = 5.00", "Cake x1 = 3.75", "Total = 8.75"]
입력:
std::vector<long long> cents = {250, 375};
std::vector<std::string> names = {"Tea", "Cake"};
std::vector<long long> quantities = {2, 1};
예상 출력:
std::vector<std::string> expected = {"Tea x2 = 5.00", "Cake x1 = 3.75", "Total = 8.75"};
입력:
long[] cents = new long[] {250, 375};
string[] names = new string[] {"Tea", "Cake"};
long[] quantities = new long[] {2, 1};
예상 출력:
string[] expected = new string[] {"Tea x2 = 5.00", "Cake x1 = 3.75", "Total = 8.75"};
설명
2 × 250 = 500센트는 5.00, 375센트는 3.75이고 합계는 875센트입니다: ["Tea x2 = 5.00", "Cake x1 = 3.75", "Total = 8.75"].
입력:
cents = [5]
names = ["Gum"]
quantities = [3]
예상 출력:
expected = ["Gum x3 = 0.15", "Total = 0.15"]
입력:
std::vector<long long> cents = {5};
std::vector<std::string> names = {"Gum"};
std::vector<long long> quantities = {3};
예상 출력:
std::vector<std::string> expected = {"Gum x3 = 0.15", "Total = 0.15"};
입력:
long[] cents = new long[] {5};
string[] names = new string[] {"Gum"};
long[] quantities = new long[] {3};
예상 출력:
string[] expected = new string[] {"Gum x3 = 0.15", "Total = 0.15"};
설명
3 × 5 = 15센트는 0.15로 씁니다: ["Gum x3 = 0.15", "Total = 0.15"].
접근 방법
먼저 스스로 풀어 본 뒤 힌트를 하나씩 열어 보세요.
힌트 1
모든 계산은 정수 센트로 하세요.
힌트 2
센트를 달러(cents / 100)와 나머지(cents % 100)로 나누세요.
힌트 3
센트는 항상 두 자리로 쓰므로 5센트는 0.05입니다.
예상 복잡도
시간 O(항목 수), 추가 공간 O(항목 수)
참고 자료
이 문제는 CodeUtility에 맞게 수정되었습니다. 위의 설명과 제한 조건을 따르세요.