[프로그래머스 / JAVA] Level 1 2016년 (12901)
⏰ 2021-12-15 (수) 22:58:49
2016년
랭크 | 사용 언어 |
---|---|
Level 1 |
🔗 🔗 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일같은 날짜는 주어지지 않습니다)
입출력 예
a | b | result |
---|---|---|
5 | 24 | "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"; }; } }
🏷️ 태그
# 프로그래머스
# 알고리즘
# JAVA(자바)
# Level 1
읽어주셔서 고마워요!
도움이 되셨다면, 공감이나 댓글을 달아주시는 건 어떤가요?
블로그 운영에 큰 힘이 됩니다.