[코드업] 1019 연월일 입력받아 그대로 출력하기

Coastby·2022년 10월 5일
0

코딩테스트

목록 보기
1/11

문제

입력

연, 월, 일이 ".(닷)"으로 구분되어 입력된다.

출력

입력받은 연, 월, 일을 yyyy.mm.dd 형식으로 출력한다.
(%02d를 사용하면 2칸을 사용해 출력하는데, 한 자리 수인 경우 앞에 0을 붙여 출력한다.)

입력 예시

2013.8.5

출력 예시

2013.08.05

풀이

문자열을 마침표('.')로 구분하여 자르기 위해
아래와 같이 코드를 작성하면 빈 배열이 리턴되는 것을 확인 할 수 있습니다.

String str = "a.b.c";         
String[] strArr = str.split(".");         
System.out.println(Arrays.toString(strArr));  // []

split() 메소드는 파라미터로 정규식을 입력 받는데,
정규식에서 마침표(.)는 임의의 한 문자를 의미합니다.

str.split("[.]");
정규식에서 []는 문자의 집합이나 범위를 나타냅니다.
마침표(.)를 범위를 나타내는 [] 사이에 넣어서, 문자로 취급하였습니다.

str.split("\\.");
정규식에서 역슬래시() 다음에 마침표와 같은 특수문자(즉, 정규식에서 특정한 의미를 가지는 문자)가 오면
역슬래시() 다음에 오는 문자를 일반 문자로 취급합니다.
즉, 정규식에서 '.'는 일반문자 마침표를 의미합니다.
그리고, Java의 문자열에서 역슬래시()를 표현하기 위해서는 
앞에 \를 붙여서 escape 처리를 해야합니다.
따라서, 위 예제에서는 split()의 파라미터로 "\."를 전달하여, 
문자열을 마침표 단위로 자르도록 하였습니다.
출처: https://hianna.tistory.com/618 [어제 오늘 내일:티스토리]

제출

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String s = sc.nextLine();
        String[] date = s.split("[.]");
        int year = Integer.parseInt(date[0]);
        int month = Integer.parseInt(date[1]);
        int day = Integer.parseInt(date[2]);
        System.out.printf("%04d.%02d.%02d", year, month, day);
    }
}
profile
훈이야 화이팅

0개의 댓글