22.4.14 [HackerRank]Java Output Formatting

서태욱·2022년 4월 14일
0

Algorithm

목록 보기
3/45
post-thumbnail

✏️ 풀이

import java.util.Scanner;

public class Solution {

    public static void main(String[] args) {
            Scanner sc=new Scanner(System.in); // Scanner의 객체 생성 System.in으로 입력값을 바이트 단위로 읽음
            System.out.println("================================");
            for(int i=0;i<3;i++) // for문을 이용한 반복문. i 변수를 0으로 초기화 하고, 3보다 작을때까지, i가 하나씩 증가하며 조건 만족시까지 반복
            {
                String s1=sc.next(); // next();로 공백 이전까지의 문자열을 입력받음 
                int x=sc.nextInt(); // nextInt();로 정수 입력 받음
                System.out.printf("%-15s%03d%n", s1, x); 
                // %-15s: String을 출력하되, 입력 숫자(15)만큼의 공간을 할당한다. 양수는 문자열이 오른쪽 정렬되고 음수는 왼쪽 정렬된다. 
                // %03d: 정수(%d)를 표현하되, 총 3자리로 나타내고, 앞 빈자리는 0으로 채운다.
                // %n: 개행한다.
            }
            System.out.println("================================");

    }
}

✅ 문자열 포맷 출력 printf()

System.out.printf(format, arguments)의 형식으로 작성.

%n: 줄 바꿈(개행)
%s: string 형식 출력
%d: integer 형식 출력
%f: float 형식 출력
%t: date, time 형식 출력
%o: 8진수 integer형식 출력
%x: 16진수 integer형식 출력
%b: boolean형식 출력
%e: 지수 형식 출력

🌱 개선 포인트

원래는 아래와 같이 조건에 따라서 input값으로 주어지는 숫자가
100의 자리, 10의 자리, 1의 자리인 경우를 나누어 숫자 앞에 0을 넣어 3자리수를 맞추도록 했다.

if(x >=100){
	System.out.printf(%-15s%d%n”, s1, x);
} else if(x >=10) {
	System.out.printf(%-15s0%d%n, s1, x);
} else {
	System.out.printf(%-15s00%d%n”, s1, x);
}

그런데 검색하다보니 조건을 일일히 맞춰주지 않아도 나타내야 하는 총 자리수를
지정해주기만 하면 앞의 빈자리는 자동으로 0을 채워주는 방식을 알게 되어
풀이를 간단하게 하였다.

👉 참고

profile
re:START

0개의 댓글