> 개발-IT-인터넷/> JAVA

[해커랭크(HackerRank) JAVA 풀이] - Java Date and Time

jini:) 2021. 10. 1. 15:19
728x90
반응형
해커랭크 - https://www.hackerrank.com/
Prepare > Java > Introduction > Java Date and Time
 

HackerRank

HackerRank is the market-leading technical assessment and remote interview solution for hiring developers. Learn how to hire technical talent from anywhere!

www.hackerrank.com

 

Calendar 클래스는 YEAR, MONTH, DAY_OF_MONTH, HOUR 등과 같은 달력 필드 집합과 특정 순간 간의 변환 및 날짜 가져오기와 같은 달력 필드 조작을 위한 메서드를 제공하는 추상 클래스입니다.

날짜가 주어집니다. 해당 날짜의 요일을 반환하는 getDay 메서드를 작성하기만 하면 됩니다.

 

Example

  • month = 8
  • day = 14
  • year = 2017

메서드는 MONDAY를 해당 날짜의 날짜로 반환해야 합니다.

[출처] https://www.hackerrank.com/challenges/java-date-and-time/problem

 

Function Description

아래 에디터에서 findDay 함수를 완성하세요.

findDay에는 다음 매개변수가 있습니다.

  • int : month
  • int : day
  • int : year

 

Returns

대문자로 된 요일

 

Input Format

MM DD YYYY 형식의 월, 일 및 연도를 각각 공백으로 구분하여 포함하는 한 줄의 입력.

 

Constraints

2000 < year < 3000

 

 

Sample Input 

08 05 2015

 

Sample Output

WEDNESDAY

 

Explanation

2015년 8월 5일은 수요일이었습니다.

 

 

Code 

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 calendar = Calendar.getInstance();
        
        calendar.set(Calendar.YEAR, year);
        calendar.set(Calendar.MONTH, month-1);
        calendar.set(Calendar.DATE, day);
        
        return calendar.getDisplayName(Calendar.DAY_OF_WEEK, Calendar.LONG, Locale.getDefault()).toUpperCase();
    }

}

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();
    }
}

 

Calendar 클래스의 set()으로 year, month, day 각각 세팅.
month는 0부터 시작해서 8월을 7로 바꿔서 지정. (0이 1월)
getDisplayName으로 출력시 Wednesday로 나오므로 toUpperCase()사용하여 대문자로 변경.

 

 

 

개인 공부를 위한 포스팅입니다.
모든 번역, 코드는 완벽하지 않을 수 있습니다.

 

 

 

728x90
반응형