프로그래머스 레벨 1 2016년 문제를 풀이했다.
자주 사용해보지 않은 Time 클래스를 활용하여 풀이하였고, DayOfWeek의 getValue() 메소드를 통해 구하려는 요일의 int 값을 구하여 사전에 초기화해둔 map에서 요일을 리턴하도록 구현했다.
만약 dayMap을 자주 사용하고, 다른 클래스에서도 사용한다면 반복되는 객체 생성을 방지하기 위해 static final로 선언해두어도 좋을 것 같다.
Year2016.java
package com.example.Programmers.Lv1;
import java.time.DayOfWeek;
import java.time.LocalDate;
import java.util.Map;
/**
* 프로그래머스 Lv1 - 2016년
* time 클래스를 활용한 풀이
*/
public class Year2016 {
public String solution(int a, int b) {
// 요일별 해당하는 번호를 가지고 있는 맵 초기화
Map<Integer, String> dayMap = Map.of(
1, "MON",
2, "TUE",
3, "WED",
4, "THU",
5, "FRI",
6, "SAT",
7, "SUN");
// 해당 날짜의 LocalDate 객체를 구하고 요일을 추출(int형으로)
LocalDate date = LocalDate.of(2016, a, b);
DayOfWeek dayOfWeek = date.getDayOfWeek();
int dayOfWeekNumber = dayOfWeek.getValue();
// 요일 리턴
return dayMap.get(dayOfWeekNumber);
}
}
Year2016Test.java
package com.example.Programmers.Lv1;
import static org.junit.Assert.assertEquals;
import org.junit.Test;
public class Year2016Test {
@Test
public void testYear2016() {
Year2016 y = new Year2016();
String result1 = y.solution(5, 24);
assertEquals("TUE", result1);
}
}