2016년
x2016년 1월 1일은 금요일입니다. 2016년 A월 B일은 무슨 요일일까요? 두 수 A,B를 입력받아 A월 B일이 무슨 요일인지 출력하는 getDayName 함수를 완성하세요. 요일의 이름은 일요일부터 토요일까지 각각
SUN,MON,TUE,WED,THU,FRI,SAT
를 출력해주면 됩니다. 예를 들어 A=5, B=24가 입력된다면 5월 24일은 화요일이므로 TUE를 반환하면 됩니다.
메소드를 최대한 이용해서 풀어보려고 했으나 11월과 2월에서 하루의 오차가 발생하는 현상이 일어나서 포기하고 단순하게 배열 month에 각 월의 일 수를 넣어주고, weeks에 목요일부터 넣어주었다. (1월 1일은 금요일이므로 days % 7 = 1일 때 금요일이어야 한다.)
a-1월 까지의 일 수를 모두 더해주고 b를 더해 전체 일 수를 구한 후 7을 나눈 나머지를 이용해 요일을 구했다.
x
public class TryHelloWorld {
public String getDayName(int a, int b) {
String[] weeks = {"THU", "FRI", "SAT", "SUN", "MON", "TUE", "WED"};
int[] month = {31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int days = 0;
for (int i = 0; i < a - 1; i++) {
days += month[i];
}
days += b;
return weeks[days % 7];
}
public static void main(String[] args) {
TryHelloWorld test = new TryHelloWorld();
int a = 2;
for (int b = 1; b < 30; b++)
System.out.println(test.getDayName(a, b));
}
}
'공부 > algorithm' 카테고리의 다른 글
[programmers] 하샤드수 (0) | 2018.05.22 |
---|---|
[programmers] 최솟값 만들기 (0) | 2018.05.22 |
[programmers] 행렬의 곱셈 (0) | 2018.05.22 |
[programmers] 콜라츠 추측 (0) | 2018.05.22 |
[programmers] 나누어 떨어지는 숫자 배열 (0) | 2018.05.22 |
댓글