[프로그래머스 / JAVA] Level 1 2016년 (12901)
게시글
⏰ 2021-12-15 13:58:49
D O W N

D O W N
랭크 | 사용 언어 |
---|---|
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"를 반환하세요.
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"; }; } }
🏷️ Related Tag