-
프로그래머스 - 2016년알고리즘 2022. 7. 1.반응형
내 풀이
import java.time.DayOfWeek; import java.time.LocalDate; public class P_34 { public String solution(int a, int b) { // 2016년 // 윤년 2월이 29일까지 있음 // DayOfWeek의 getValue() 메소드는 월요일=1, 일요일=7 임. String [] day = {"SUN","MON","TUE","WED","THU","FRI","SAT","SUN"}; LocalDate date = LocalDate.of(2016, a, b); // = yyyy-mm-dd DayOfWeek dayOfWeek = date.getDayOfWeek(); int ans = dayOfWeek.getValue(); String answer = day[ans]; return answer; } public static void main(String[] args) { P_34 p = new P_34(); System.out.println(p.solution(2, 29)); } }
날짜 관련 클래스를 이용해서 간단하게 풀었다.
주의할 점은 윤년의 개념을 알 것 -> 2월이 29일까지 있는 년도
DayOfWeek의 getValue() 메소드는 일월화수목금이 아니라 월화수목금 개념
월요일 인덱스가 1 일요일이 7 이다.
- 추신 -
(윤년 : 년도 나누기 4 했을때 완벽히 떨어지고 100으로 나누었을때 완벽히 떨어지지 않는 해)
윤년의 개념과 윤년 계산 방법
다른 사람 풀이
class TryHelloWorld { public String getDayName(int a, int b) { String answer = ""; String[] day = { "FRI", "SAT", "SUN", "MON", "TUE", "WED", "THU" }; int[] date = { 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; int allDate = 0; for (int i = 0; i < a - 1; i++) { allDate += date[i]; } allDate += (b - 1); answer = day[allDate % 7]; return answer; } public static void main(String[] args) { TryHelloWorld test = new TryHelloWorld(); int a=5, b=24; System.out.println(test.getDayName(a,b)); } }
b-1 을 하는 이유는 1월1일도 하루 지난걸로 계산하기 때문에 1을 빼줘야 한다.
import java.time.*; class Solution { public String solution(int a, int b) { return LocalDate.of(2016, a, b).getDayOfWeek().toString().substring(0,3); } }
내 풀이와 비슷하지만 한줄로 끝낸 결과
반응형'알고리즘' 카테고리의 다른 글
프로그래머스 - 비밀 지도 [2018 KAKAO BLIND RECRUITMENT] (0) 2022.07.06 프로그래머스 - 나머지가 1이 되는 수 찾기 (0) 2022.07.04 프로그래머스 - 최소직사각형 (0) 2022.06.30 프로그래머스 - 부족한 금액 계산하기 (0) 2022.06.29 프로그래머스 - 다트 게임 [2018 KAKAO BLIND RECRUITMENT] (0) 2022.06.28