12901 2016년

알파로그·2023년 3월 12일
0
post-thumbnail

✏️ 문제 설명

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일같은 날짜는 주어지지 않습니다)

✏️ 문제 풀이

주어진 int 를 정수로 바꾸어 한 자릿수 밖에 없다면 앞에 “0” 을 붙여주어 두 자리로 만을어 주었다.

그 다음 Local date 로 변환해 해당 날짜에 해당하는 요일을 int 로 추출했고,
배열에서 번호에 맞는 요일을 꺼냈다.

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;

class Solution {
    public String solution(int a, int b) {
        String answer = "";
        
        String[] week = {"MON", "TUE", "WED", "THU", "FRI", "SAT", "SUN"};

        String aa = String.valueOf(a);
        String bb = String.valueOf(b);
        if (aa.length() < 2) aa = "0" + aa;
        if (bb.length() < 2) bb = "0" + bb;

        DateTimeFormatter format = DateTimeFormatter.ofPattern("yyyyMMdd");

        int value = LocalDate.parse("2016" + aa + bb, format).getDayOfWeek().getValue();

        answer = week[value - 1];
        
        return answer;
    }
}

📍 다른사람의 풀이

코드를 보자마자 아차 싶었다.

나는 변수 값을 String 으로 변환해 DateTimeFormatter 을 사용해 문제를 해결했지만 이 코드에선 int 매개변수를 변환 없이 그대로 사용했다.

import java.time.*;

class Solution {
  public String solution(int a, int b) {

      return LocalDate.of(2016, a, b)
           .getDayOfWeek().toString().substring(0,3);
  }
}
profile
잘못된 내용 PR 환영

0개의 댓글