반응형
문제 설명
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) {
String answer = "";
int totalDay = 0;
int dayOfMonth = 0;
//현재 월 이전까지의 총 일 수를 구함
for(int i=1; i<a; i++) {
if(i == 1 || i == 3 || i == 5 || i == 7 || i == 8 || i == 10 || i == 12) dayOfMonth = 31;
else if(i == 2) dayOfMonth = 29;
else dayOfMonth = 30;
totalDay += dayOfMonth;
}
//현재 월의 일수를 더함
totalDay += b;
//1월1일은 금요일 / 7로 나눈 나머지가 1인 경우 금요일
switch(totalDay % 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;
}
}
다른 사람 코드
라이브러리 사용하는거..신기방기..
// 문제가 개편 되었습니다. 이로 인해 함수 구성이 변경되어, 과거의 코드는 동작하지 않을 수 있습니다.
// 새로운 함수 구성을 적용하려면 [코드 초기화] 버튼을 누르세요. 단, [코드 초기화] 버튼을 누르면 작성 중인 코드는 사라집니다.
import java.util.*;
class TryHelloWorld
{
public String getDayName(int month, int day)
{
Calendar cal = new Calendar.Builder().setCalendarType("iso8601")
.setDate(2016, month - 1, day).build();
return cal.getDisplayName(Calendar.DAY_OF_WEEK, Calendar.SHORT, new Locale("ko-KR")).toUpperCase();
}
public static void main(String[] args)
{
TryHelloWorld test = new TryHelloWorld();
int a=5, b=24;
System.out.println(test.getDayName(a,b));
}
}
반응형
'Algorithm Study > Programmers' 카테고리의 다른 글
수박수박수박수박수박수?/java (0) | 2019.08.28 |
---|---|
두 정수 사이의 합 / java (0) | 2019.08.28 |
가장 큰 수 / java / 정렬 (0) | 2019.08.17 |
k번째수/java/정렬(출제 빈도 높음) (0) | 2019.08.16 |
체육복/java/탐욕법 알고리즘 (0) | 2019.08.15 |