Computer Science/알고리즘
[프로그래머스] Lv.1 2016년
가자미
2021. 6. 20. 15:48
문제 링크
https://programmers.co.kr/learn/courses/30/lessons/12901
코딩테스트 연습 - 2016년
2016년 1월 1일은 금요일입니다. 2016년 a월 b일은 무슨 요일일까요? 두 수 a ,b를 입력받아 2016년 a월 b일이 무슨 요일인지 리턴하는 함수, solution을 완성하세요. 요일의 이름은 일요일부터 토요일까
programmers.co.kr
내 풀이
- 주어진 월을 고려하여 지난 달의 일 수를 switch문으로 일자에 더한다.
- 더해진 일자를 요일에 따라 7로 나누어 요일을 반환
class Solution {
public String solution(int a, int b) {
while(a!=1){
switch(a){
case 2:
b+=31;
break;
case 3:
b+=29;
break;
case 4:
b+=31;
break;
case 5:
b+=30;
break;
case 6:
b+=31;
break;
case 7:
b+=30;
break;
case 8:
b+=31;
break;
case 9:
b+=31;
break;
case 10:
b+=30;
break;
case 11:
b+=31;
break;
case 12:
b+=30;
break;
}
a--;
}
b=b%7;
String answer=null;
switch(b){
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;
case 0:
answer="THU";
break;
}
return answer;
}
}
다른 풀이
- 각 달의 일자와 한 주의 요일을 배열에 저장
- 반복문을 사용해 일자를 더함
class Solution {
public String solution(int a, int b) {
String answer = "";
int[] c = {31,29,31,30,31,30,31,31,30,31,30,31};
String[] MM ={"FRI","SAT","SUN","MON","TUE","WED","THU"};
int Adate = 0;
for(int i = 0 ; i< a-1; i++){
Adate += c[i];
}
Adate += b-1;
answer = MM[Adate %7];
return answer;
}
}