22.4.21 [HackerRank]Java Date and Time

서태욱·2022년 4월 21일
0

Algorithm

목록 보기
10/45
post-thumbnail

🌱 배경지식

  • 자바 배열 (Array)
    배열은 자료형 타입 앞에 []을 붙여 표현한다.
    배열 길이는 고정되어 있고, 배열의 값을 얻으려면 다음과 같이 인덱싱을 통해야 한다.
String[] weeks = {"월", "화", "수", "목", "금", "토", "일"};
System.out.println(weeks[3]);

weeks[3]은 배열의 네번째 항목(0부터 시작)에 있는 목요일이다.

✏️ 해설 및 분석

import java.io.*;
import java.math.*;
import java.security.*;
import java.text.*;
import java.util.*;
import java.util.concurrent.*;
import java.util.regex.*;

class Result {

    /*
     * Complete the 'findDay' function below.
     *
     * The function is expected to return a STRING.
     * The function accepts following parameters:
     *  1. INTEGER month
     *  2. INTEGER day
     *  3. INTEGER year
     */

    public static String findDay(int month, int day, int year) {
        Calendar cal = Calendar.getInstance(); // Calendar 객체를 사용해 month, day, year 세팅
        cal.set(Calendar.MONTH,month-1); // 0부터 1월이 시작되므로 -1 해줌
        cal.set(Calendar.DAY_OF_MONTH,day);
        cal.set(Calendar.YEAR,year);
        
        String[] DAY_OF_WEEK = {"SUNDAY", "MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY"}; 
        // 배열로 요일을 생성한다. 이때, 얻어오는 요일 값은 0=일 1=월 2=화 ~ 6=토
        
        return DAY_OF_WEEK[cal.get(Calendar.DAY_OF_WEEK)-1];
        // cal.get(Calendar.DAY_OF_WEEK)으로 얻어오는 값은 
        // 1=일 2=월 ~ 7=토 이므로 -1을 해준다. (배열[]은 0부터 시작, 얻어온 요일 값은 1부터 시작)

    }

}

public class Solution {
    public static void main(String[] args) throws IOException {
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(System.getenv("OUTPUT_PATH")));

        String[] firstMultipleInput = bufferedReader.readLine().replaceAll("\\s+$", "").split(" ");

        int month = Integer.parseInt(firstMultipleInput[0]);

        int day = Integer.parseInt(firstMultipleInput[1]);

        int year = Integer.parseInt(firstMultipleInput[2]);

        String res = Result.findDay(month, day, year);

        bufferedWriter.write(res);
        bufferedWriter.newLine();

        bufferedReader.close();
        bufferedWriter.close();
    }
}

👉 참고

profile
re:START

0개의 댓글