Maenya's Techlog

[20201215 코딩문제풀이] 2016년 (Lv1, 날짜객체, try-catch) 본문

개발자의 삶/코딩 문제풀이

[20201215 코딩문제풀이] 2016년 (Lv1, 날짜객체, try-catch)

ming235 2020. 12. 18. 22:20

문제 설명

2016년 1월 1일은 금요일입니다. 2016년 a월 b일은 무슨 요일일까요? 두 수 a ,b를 입력받아 2016년 a월 b일이 무슨 요일인지 리턴하는 함수, solution을 완성하세요. 요일의 이름은 일요일부터 토요일까지 각각 SUN,MON,TUE,WED,THU,FRI,SAT

입니다. 예를 들어 a=5, b=24라면 5월 24일은 화요일이므로 문자열 TUE를 반환하세요.

 

제한 조건

  • 2016년은 윤년입니다.
  • 2016년 a월 b일은 실제로 있는 날입니다. (13월 26일이나 2월 45일같은 날짜는 주어지지 않습니다)

입출력 예

a                                     b                                                 result

5 24 TUE

 

[해결 방안]

Date객체를 사용한다.

a, b를 2016년 date 형식에 끼워넣어 거기서 요일만 추출해내면 됨. So easy~

 

import java.util.*;
import java.text.*;

class Solution {
    public String solution(int a, int b) {
        String answer = "";
        
        String inputStr = "2016-" + a + "-" + b;  // format: yyyy-MM-dd 

        try {    // parse()함수를 사용하려면 try-catch문을 사용해야 함.
            Date strDate = new SimpleDateFormat("yyyy-MM-dd").parse(inputStr);
            // System.out.println("date : " + strDate); 
            // print ex) Tue May 24 00:00:00 KST 2016
            answer = strDate.toString().substring(0,3).toUpperCase();
            // 대문자로 변환
        } catch (Exception e) {
            System.out.println(e); 
        }
        
        
        return answer;
    }
}

 

[사용된 skill]

toUpperCase() : 문자열을 대문자로 변환.

parse(String s) : 문자열을 date 형식으로 변환. try-catch문 필요