[LeetCode] Reformat Date

아르당·2026년 5월 18일

LeetCode

목록 보기
315/561
post-thumbnail

문제를 이해하고 있다면 바로 풀이를 보면 됨
전체 코드로 바로 넘어가도 됨
마음대로 번역해서 오역이 있을 수 있음

Probelm

문자열 date가 Day Month Year 형태로 주어진다.

  • Day는 {"1st", "2nd", "3rd", "4th", ..., "30th", "31st"}에 있다.
  • Month는 {"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"}에 있다.
  • Year는 [1900, 2100] 범위 내에 있다.

문자열 date를 YYYY-MM-DD 형태로 변환해라.

  • YYYY는 4자리 연도를 나타낸다.
  • MM은 2자리 월을 나타낸다.
  • DD는 2자리 일을 나타낸다.

Example

#1
Input: date = "20TH Oct 2052"
Output: "2052-10-20"

#2
Input: date = "6th Jun 1933"
Output: "1933-06-06"

#3
Input: date = "26th May 1960"
Output: "1960-05-26"

Constraints

  • 주어진 날짜는 유효성이 보장되므로 오류 처리가 필요하지 않다.

Solved

class Solution {
    public String reformatDate(String date) {
        StringBuilder sb = new StringBuilder();
        int length = date.length();
        String day = date.substring(0, length - 11);
        day = day.length() == 1 ? "0" + day : day;

        return sb
            .append(date.substring(length - 4))
            .append("-")
            .append(monthToNumber(date.substring(length - 8, length - 5)))
            .append("-")
            .append(day)
            .toString();
    }

    private String monthToNumber(String m){
        return switch (m) {
            case "Jan" -> "01";
            case "Feb" -> "02";
            case "Mar" -> "03";
            case "Apr" -> "04";
            case "May" -> "05";
            case "Jun" -> "06";
            case "Jul" -> "07";
            case "Aug" -> "08";
            case "Sep" -> "09";
            case "Oct" -> "10";
            case "Nov" -> "11";
            case "Dec" -> "12";
            default -> "";
        };
    }
}
profile
내 마음대로 코드 작성하는 세상

0개의 댓글