본문 바로가기

이론/알고리즘&자료구조&Java

[Java] String.format 에 대해 알아보자(백준 알고리즘 2439)

알고리즘 문제를 풀다보면 자릿수를 맞춰야 하는 문제가 하나씩 보이는데,


예를들면, 

 

0010을 출력해야 하는데 int형으로 출력하면 00이 생략된다던가


모든 스트링을 오른쪽 정렬해야한다던가.


이런 경우가 있다.


Java에서 String.format함수를 통해 쉽게 이 문제를 해결할 수 있다.


자주 쓰이는 두가지 경우만 알아보겠다.


1. String의 자릿수를 맞추는 경우


String.format("%자릿수s", str)  를 이용한다.

자릿수에 맞추어서 str이 변환된다. 만약, str의 길이가 자릿수보다 길 경우 str이 그대로 출력된다.

String format=String.format("%"+T+"s", str);

#만약 자릿수를 맞추고 왼쪽 정렬을 하고 싶다면 

String format=String.format("%-"+T+"s", str);
위와 같이 %뒤에 - 를 추가해준다. 왼쪽 정렬을 의미하는 플래그이다.


2. 숫자의 자릿수를 맞추는 경우


숫자의 경우도 비슷하다. 

정수인 경우, String.format("%자릿수d", num) 를 이용한다


String과 마찬가지고 -를 통해 왼쪽정렬을 할 수 있고,

만약 앞에 0을 삽입하고 싶다면 

 String format=String.format("%0"+T+"d", 20);
위와 같이 앞에 0을 넣어준다.

**  2017 카카오 신입공채 예선 1번 문제에 String.format 를 활용하는 문제가 나왔다**

binary=String.format("%0"+n+"d", Integer.parseInt(binary));



그리고 관련 문제인, 백준 2439번 별찍기-2 도 이를 활용할 수 있다.  

https://www.acmicpc.net/problem/2439
import java.util.Scanner;
class Main{
    public static void main(String[] args){
        Scanner scan=new Scanner(System.in);
        int T=scan.nextInt();
        String star="*";
        for(int i=0; i<T; i++) {
        	String format=String.format("%"+T+"s", star);
        	System.out.println(format);
        	star+="*";
        }
    }
}