CS/프로그래머스

문제 // Programmers // LEVEL1 // Date // 2016년 // Java

문스코딩 2018. 9. 11. 15:33


프로그래머스

2016년

업데이트 :: 2018.09.11


문제

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

코드

1차풀이

class Solution {
    public String solution(int a, int b) {
        String answer = "";

        // 2016년 (윤년)
        // 2016년 1월 1일 금요일
        // 31 29 31 30 31 30 31 31 30 31 30 31
        // SUN,MON,TUE,WED,THU,FRI,SAT

        int targetOfMonth = a;
        int targetOfDate = b;
        int sumOfAllDate = 0;

        int[] lastDateOfMonth = new int[] {31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
        String[] dayOfWeek = new String[] {"SUN","MON","TUE","WED","THU","FRI","SAT"};

        // == Month Sum ==
        for(int i=0; i<targetOfMonth-1; i++) {
            sumOfAllDate += lastDateOfMonth[i];
        }

        // == Date Sum ==
        sumOfAllDate += targetOfDate;

        // == 2016년 1월 1일 금요일 ==
        return dayOfWeek[(sumOfAllDate+4) % 7];
    }
}

예제

Calendar API

class TryHelloWorld
{
    public String getDayName(int month, int day)
    {
        Calendar cal = new Calendar.Builder().setCalendarType("iso8601")
                        .setDate(2016, month - 1, day).build();
        return cal.getDisplayName(Calendar.DAY_OF_WEEK, Calendar.SHORT, new Locale("ko-KR")).toUpperCase();
    }
    public static void main(String[] args)
    {
        TryHelloWorld test = new TryHelloWorld();
        int a=5, b=24;
        System.out.println(test.getDayName(a,b));
    }
}

LocalDate API

import java.time.*;
class TryHelloWorld
{
    public String getDayName(int a, int b)
    {
       LocalDate date = LocalDate.of(2016, a, b);
   return date.getDayOfWeek().toString().substring(0, 3);
    }
    public static void main(String[] args)
    {
        TryHelloWorld test = new TryHelloWorld();
        int a=5, b=24;
        System.out.println(test.getDayName(a,b));
    }
}

결과

  • 1007
    • 점수가 의미하는게 무엇인지 ...

학습

  • API 사용가능

Created by MoonsCoding

e-mail :: jm921106@gmail.com


반응형