-
[프로그래머스 Lv.1] 2016년 JavaDEV/알고리즘 2020. 6. 1. 23:46
문제설명
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 Solution
import java.util.Calendar; class Solution { public String solution(int a, int b) { String answer = ""; String[] week = {"SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT"}; Calendar cal = Calendar.getInstance(); // 현재 날짜 cal.set(Calendar.YEAR, 2016); // 현재 년도 cal.set(Calendar.MONTH, a - 1); // 현재 월 (1월은 0) cal.set(Calendar.DAY_OF_MONTH, b); // 현재 월의 날짜 answer = week[cal.get(Calendar.DAY_OF_WEEK) - 1]; // 현재 요일 (일요일은 1) return answer; } }
다른사람 풀이(배열 사용)
class TryHelloWorld { public String getDayName(int a, int b) { String answer = " "; int[] monthDay={31,29,31,30,31,30,31,31,30,31,30,31};//달의 마지막 날짜 for (int i = 1; i < a; i++) { b+=monthDay[i-1]; } switch(b%7){ case 3:answer="SUN";break; case 4:answer="MON";break; case 5:answer="TUE";break; case 6:answer="WED";break; case 0:answer="THU";break; case 1:answer="FRI";break;//2016년 1월1일은 금요일 case 2:answer="SAT";break; } return answer; } public static void main(String[] args) { TryHelloWorld test = new TryHelloWorld(); int a=5, b=24; System.out.println(test.getDayName(a,b)); } }
'DEV > 알고리즘' 카테고리의 다른 글
[프로그래머스 Lv.1] 두 수 사이의 합 Java (0) 2020.07.06 [프로그래머스 Lv.1] 같은 숫자는 싫어 Java (0) 2020.07.06 [프로그래머스 Lv.1]가운데 글자 가져오기 Java (0) 2020.06.05 [프로그래머스 Lv.1] K번째 수 Java (0) 2020.06.05 [프로그래머스 Lv.1] 완주하지 못한 선수 Java (2) 2020.05.25