logo

𝝅번째 알파카의 개발 낙서장

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

게시글
⏰ 2021-12-15 13:58:49

D O W N

https://user-images.githubusercontent.com/50317129/145976356-6b5d1430-31c0-4c34-829e-6be8f747ab19.png
프로그래머스
이 게시글은 프로그래머스 시리즈의 78개 중 26번 째 게시글입니다.
https://user-images.githubusercontent.com/50317129/260317030-e4b8575b-f09e-47f4-ab70-168a817268c6.png

Table of Contents

https://user-images.githubusercontent.com/50317129/260317030-e4b8575b-f09e-47f4-ab70-168a817268c6.png

2016년

랭크사용 언어
Level 1
JAVA

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

입출력 예

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";
				};
	}
}

🏷️ Related Tag

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

😍 읽어주셔서 감사합니다!
도움이 되셨다면, 💝공감이나 🗨️댓글을 달아주시는 건 어떤가요?
블로그 운영에 큰 힘이 됩니다!
https://blog.itcode.dev/posts/2021/12/15/programmers-a0026