22.4.22 [HackerRank]Java Currency Formatter

서태욱·2022년 4월 22일
0

Algorithm

목록 보기
11/45
post-thumbnail

🌱 배경지식

NumberFormat 클래스

이 추상 클래스는 수에 대한 전반적인 포맷 기능을 제공해 준다. 팩토리 패턴을 사용해 작성된 클래스이므로 new 연산자를 이용해 객체를 생성하는 것이 아닌 getInstance() method를 사용해 인스턴스를 얻는다.

이 클래스로 표현할 수 있는 포맷의 종류는 아래와 같으며, 클래스 생성 시 각 포맷에 해당하는 인스턴스 반환 메서드를 사용한다.

정수형: getIntegerInstance()
통화: getCurrencyInstance()
퍼센트: getPercentInstance()

통화 수치 객체 생성 방법 예시
NumberFormat nf = NumberFormat.getCurrencyInstance();

Locale 클래스

각 지역의 언어, 나라 등의 정보를 담고 있는 클래스이다.

Locale 객체는 생성자와 Builder를 통해 생성할 수 있다.
1) 생성자를 통한 객체 생성

Locale(String language, String country, String variant)
Locale(String language, String country)
Locale(String language)

// 사용 예시
Locale locale1 = new Locale("en", "US");
Locale locale2 = new Locale("ko");

2) Builder를 통한 객체 생성

Locale locale1 = new Locale.Builder()
	    .setLanguage("en")
            .setRegion("US")
            .build();
            
Locale locale1 = new Locale.Builder()
	    .setLanguage("ko")
            .build();

✏️ 해설 및 분석

import java.io.*;
import java.util.*;
import java.text.*;
import java.math.*;
import java.util.regex.*;

public class Solution {
    
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        double payment = scanner.nextDouble();
        scanner.close();

        // Write your code here.
        String us = NumberFormat.getCurrencyInstance(Locale.US).format(payment); 
        //통화 수치 객체 생성 예시를 따라 작성한다.
        Locale indiaCustomLocale = new Locale("en", "IN"); 
        // 문제에서 인도는 제공되는 기본 Locale이 없어 직접 constuct 해주라고 되어 있다.
        String india = NumberFormat.getCurrencyInstance(indiaCustomLocale).format(payment);
        String china = NumberFormat.getCurrencyInstance(Locale.CHINA).format(payment);
        String france = NumberFormat.getCurrencyInstance(Locale.FRANCE).format(payment);
        
        System.out.println("US: " + us);
        System.out.println("India: " + india);
        System.out.println("China: " + china);
        System.out.println("France: " + france);
    }
}

👉 참고

profile
re:START

0개의 댓글