알고리즘 문제를 풀다보면 자릿수를 맞춰야 하는 문제가 하나씩 보이는데,
예를들면,
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 도 이를 활용할 수 있다.
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+="*"; } } }
'이론 > 알고리즘&자료구조&Java' 카테고리의 다른 글
[알고리즘] 순열 - java(백준 10972/10973/10974/1722) (0) | 2018.08.21 |
---|---|
[백준알고리즘] 11723: 집합 -Java (0) | 2018.08.16 |
[Algorithm] Dynamic Programming vs Memoization (0) | 2018.08.01 |
[자료구조/Java Collection] Set (0) | 2018.07.30 |
Array/Linked list/ Stack/ Queue/ Tree/ Graph/ Sorting/ Dynamic Programming (1) | 2018.07.19 |