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

조회수 740회

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 답변

  • %-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
    

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)