문제 설명
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' |
나의 풀이
class Solution {
public String solution(int a, int b) {
// 날짜의 요일을 담은 배열 (2016년 1월 1일은 금요일부터 시작)
String[] day = {"FRI", "SAT", "SUN", "MON", "TUE", "WED", "THU"};
// 각 월의 일수를 담은 배열
int[] month = {31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 30};
// 총 일 수를 담을 변수 선언
int answer = 0;
// a 이전의 총 일 수 더하기
for (int i = 0; i < a - 1; i++) {
answer += month[i];
}
// 남은 일수 더하기
answer += b - 1;
// 7로 나눈 나머지의 인덱스를 가진 요일 반환
return day[answer % 7];
}
}
다른 풀이1
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;
case 2:answer="SAT";break;
}
return answer;
}
public static void main(String[] args)
{
TryHelloWorld test = new TryHelloWorld();
int month=5, day=24;
System.out.println(test.getDayName(month,day));
}
}
다른 풀이2
class TryHelloWorld
{
public String getDayName(int a, int b)
{
String answer = "";
switch(a) {
case 1:
if(b % 7 == 1)
answer = "FRI";
else if(b % 7 == 2)
answer = "SAT";
else if(b % 7 == 3)
answer = "SUN";
else if(b % 7 == 4)
answer = "MON";
else if(b % 7 == 5)
answer = "TUE";
else if(b % 7 == 6)
answer = "WED";
else
answer = "THU";
break;
case 2:
if(b % 7 == 1)
answer = "MON";
else if(b % 7 == 2)
answer = "TUE";
else if(b % 7 == 3)
answer = "WED";
else if(b % 7 == 4)
answer = "THU";
else if(b % 7 == 5)
answer = "FRI";
else if(b % 7 == 6)
answer = "SAT";
else
answer = "SUN";
break;
case 3:
if(b % 7 == 1)
answer = "TUE";
else if(b % 7 == 2)
answer = "WED";
else if(b % 7 == 3)
answer = "THU";
else if(b % 7 == 4)
answer = "FRI";
else if(b % 7 == 5)
answer = "SAT";
else if(b % 7 == 6)
answer = "SUN";
else
answer = "MON";
break;
case 4:
if(b % 7 == 1)
answer = "THU";
else if(b % 7 == 2)
answer = "FRI";
else if(b % 7 == 3)
answer = "SAT";
else if(b % 7 == 4)
answer = "SUN";
else if(b % 7 == 5)
answer = "MON";
else if(b % 7 == 6)
answer = "TUE";
else
answer = "WED";
break;
case 5:
if(b % 7 == 1)
answer = "SAT";
else if(b % 7 == 2)
answer = "MON";
else if(b % 7 == 3)
answer = "TUE";
else if(b % 7 == 4)
answer = "WED";
else if(b % 7 == 5)
answer = "THU";
else if(b % 7 == 6)
answer = "FRI";
else
answer = "SUN";
break;
case 6:
if(b % 7 == 1)
answer = "WED";
else if(b % 7 == 2)
answer = "THU";
else if(b % 7 == 3)
answer = "FRI";
else if(b % 7 == 4)
answer = "SAT";
else if(b % 7 == 5)
answer = "SUN";
else if(b % 7 == 6)
answer = "MON";
else
answer = "TUE";
break;
case 7:
if(b % 7 == 1)
answer = "FRI";
else if(b % 7 == 2)
answer = "SAT";
else if(b % 7 == 3)
answer = "SUN";
else if(b % 7 == 4)
answer = "MON";
else if(b % 7 == 5)
answer = "TUE";
else if(b % 7 == 6)
answer = "WED";
else
answer = "THU";
break;
case 8:
if(b % 7 == 1)
answer = "MON";
else if(b % 7 == 2)
answer = "TUE";
else if(b % 7 == 3)
answer = "WED";
else if(b % 7 == 4)
answer = "THU";
else if(b % 7 == 5)
answer = "FRI";
else if(b % 7 == 6)
answer = "SAT";
else
answer = "SUN";
break;
case 9:
if(b % 7 == 1)
answer = "THU";
else if(b % 7 == 2)
answer = "FRI";
else if(b % 7 == 3)
answer = "SAT";
else if(b % 7 == 4)
answer = "SUN";
else if(b % 7 == 5)
answer = "MON";
else if(b % 7 == 6)
answer = "TUE";
else
answer = "WED";
break;
case 10:
if(b % 7 == 1)
answer = "SAT";
else if(b % 7 == 2)
answer = "SUN";
else if(b % 7 == 3)
answer = "MON";
else if(b % 7 == 4)
answer = "TUE";
else if(b % 7 == 5)
answer = "WED";
else if(b % 7 == 6)
answer = "THU";
else
answer = "FRI";
break;
case 11:
if(b % 7 == 1)
answer = "TUE";
else if(b % 7 == 2)
answer = "WED";
else if(b % 7 == 3)
answer = "THU";
else if(b % 7 == 4)
answer = "FRI";
else if(b % 7 == 5)
answer = "SAT";
else if(b % 7 == 6)
answer = "SUN";
else
answer = "MON";
break;
case 12:
if(b % 7 == 1)
answer = "THU";
else if(b % 7 == 2)
answer = "FRI";
else if(b % 7 == 3)
answer = "SAT";
else if(b % 7 == 4)
answer = "SUN";
else if(b % 7 == 5)
answer = "MON";
else if(b % 7 == 6)
answer = "TUE";
else
answer = "WED";
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));
}
}
다른 풀이3
import java.time.*;
class Solution {
public String solution(int a, int b) {
return LocalDate.of(2016, a, b).getDayOfWeek().toString().substring(0,3);
}
}
참고자료
[1] 티스토리 IT is True
'👨💻 Coding Test' 카테고리의 다른 글
[SW Expert Academy/Java/D1] 2019.더블더블 (0) | 2024.10.25 |
---|---|
[SW Expert Academy/Java/D1] 1545.거꾸로 출력해 보아요 (0) | 2024.10.24 |
[Programmers/Java/Lv.0] 41.공 던지기 (0) | 2024.10.24 |
[Programmers/Java/Lv.0] 40.2차원으로 만들기 (0) | 2024.10.23 |
[Programmers/Java/Lv.0] 39.점의 위치 구하기 (0) | 2024.10.23 |