컴퓨터 프로그래밍/알고리즘
프로그래머스_2016년
깝돌이
2020. 5. 23. 10:41
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 |
<내풀이>
1. 전체 일수를 구합니다.
1-1 hashmap으로 각 달의 일수를 만들어 놉니다.
1-3 for 문을 통해서 그 전 달까지 일수를 더하고 b를 더해줍니다.
2. 전체 일수를 7로 나눠줍니다. 나누기합니다.
3. 나머지가 1이면 금요일 2이면 토요일 등등 (switch문으로 합니다. )
4. 값을 리턴해줍니다.
// 내풀이_1
public static String solution(int a, int b) {
String answer = "";
int mtodays =0;
HashMap<Integer, Integer> hm = new HashMap<>();
hm.put(1,31);
hm.put(2,29);
hm.put(3,31);
hm.put(4,30);
hm.put(5,31);
hm.put(6,30);
hm.put(7,31);
hm.put(8,31);
hm.put(9,30);
hm.put(10,31);
hm.put(11,30);
hm.put(12,31);
for(int i = 1; i<a; i++) {
mtodays+=hm.get(i);
}
mtodays+=b;
System.out.println(mtodays%7);
switch(mtodays%7){
case 0:
answer= "THU";
break;
case 1:
answer= "FRI";
break;
case 2:
answer= "SAT";
break;
case 3:
answer= "SUN";
break;
case 4:
answer= "MON";
break;
case 5:
answer= "TUE";
break;
case 6:
answer= "WED";
break;
}
return answer;
}
다른 풀이도 머 크게 차이는... 없습니다.