/favicon.ico

itcode.dev

[프로그래머스 / JAVA] Level 1 2016년 (12901)

2021-12-15 (수) 22:58:49
https://user-images.githubusercontent.com/50317129/145976356-6b5d1430-31c0-4c34-829e-6be8f747ab19.png
프로그래머스

시리즈 모아보기

프로그래머스

26 / 78
랭크사용 언어
Level 1

JAVA

🔗

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

2016년 중 특정 날짜에 해당하는 요일을 요구하는 문제. 날짜 객체를 사용하면 별다른 연산 없이 쉽게 구할 수 있다.

여기서는 Date 객체를 활용하여, yyyy-MM-dd 형태의 문자열을 Date 객체로 변환하여 요일을 빼낼 것이다.

Date.valueOf("yyyy-MM-dd").toLocalDate().getDayOfWeek().getValue()를 통해 요일을 빼낼 수 있다.

다행히 월요일을 1부터 시작해서, 7인 일요일로 끝난다. 간혹 언어나 설정에 따라 1을 일요일로 치거나, 0을 월요일 혹은 일요일로 시작하기도 한다.

코드를 간소화하기 위해 1 ~ 7 사이의 숫자를 입력하면 요일로 반환하는 메서드를 구현한다.

JAVA
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
import java.sql.Date;

/**
 * 2016년 클래스
 *
 * @author RWB
 * @since 2021.12.12 Sun 03:38:13
 */
class Solution
{
    /**
     * 해답 반환 메서드
     *
     * @param a: [int] 월
     * @param b: [int] 일
     *
     * @return [String] 해답
     */
    public String solution(int a, int b)
    {
        String dateStr = new StringBuilder().append("2016-").append(a).append("-").append(b).toString();
        
        int dayOfWeek = Date.valueOf(dateStr).toLocalDate().getDayOfWeek().getValue();
        
        return getDayName(dayOfWeek);
    }
    
    /**
     * 요일 이름 반환 메서드
     *
     * @param dayOfWeek: [int] 주별 요일 번호
     *
     * @return [String] 요일 이름
     */
    private String getDayName(int dayOfWeek)
    {
        return switch (dayOfWeek)
                {
                    case 1 -> "MON";
                    case 2 -> "TUE";
                    case 3 -> "WED";
                    case 4 -> "THU";
                    case 5 -> "FRI";
                    case 6 -> "SAT";
                    default -> "SUN";
                };
    }
}

Tags

# 프로그래머스
# 알고리즘
# JAVA(자바)
# Level 1