hackkerrank 알고리즘 문제 답이 왜 이건지 설명해 주실 분 있나요?

https://www.hackerrank.com/challenges/java-output-formatting/problem 문제 링크는 위입니다.

import java.util.Scanner;

public class Solution {

    public static void main(String[] args) {
            Scanner sc=new Scanner(System.in);
            System.out.println("================================");
            for(int i=0;i<3;i++){
                String s1=sc.next();
                int x=sc.nextInt();
                System.out.printf("%-15s%03d\n", s1, x);
            }
            System.out.println("================================");

    }
}


저거 중에서 이 부분이 답인데.. 이 코드를 뭐 어캐 해석해야 하나요..? 이거 말고 다른 직관적인 답은 없는 건아요?

System.out.printf("%-15s%03d\n", s1, x);

1답변

  • 좋아요

    0

    싫어요
    채택취소하기
    %-15s%03d
    

    의 의미는 15자리수 만큼 유지하라는 것이고 03d 는 주어진 변수가 3자리 미만이면 0으로 채우라(padding)는 겁니다.

    System.out.println(String.format("%-15s%03d", "abcdefghi", 5))
    abcdefghi      005
    
    

    템플릿보다 더 효율적인 방법은 없을 것 같습니다.

    물론 직관적인 방법이 있긴 있습니다.

    s1의 길이를 알아내서 15이 안되면 15가 될 때까지 공백을 넣어주면 되고 마찬가지고 x의 길이가 3이 안되면 0으로 채워주면 됩니다.

    저런 작업을 할바에 String format 의 규칙을 보고 사용하는 편이 훨씬 낫습니다.

    https://docs.oracle.com/javase/8/docs/api/java/util/Formatter.html
    
    • 빠른 답변 감사합니다 ㅠㅠㅠ 김진주 2018.5.15 13:18

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

작성한 답변에 다른 개발자들이 댓글을 작성하거나 댓글에 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.