나의 풀이
class Solution {
public String solution(int a, int b) {
String answer = "";
String[] week = {"FRI", "SAT", "SUN", "MON", "TUE", "WED", "THU"};
int[] date = {31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int day = 0;
for (int i = 0; i < a - 1; i++) {
day += date[i];
}
day += b - 1;
answer = week[day % 7];
return answer;
}
}
조원의 풀이
모든 년도에 계산
import java.util.Scanner;
public class Algorithm_01 {
public static void main(String[] args) {
int year = 2016;
int a=0;
int b=0;
Scanner input = new Scanner(System.in);
System.out.println("월(1~12)을 입력하세요");
a = input.nextInt();
System.out.println("일(1~31)을 입력하세요");
b = input.nextInt();
System.out.print(a + "월" + b + "일");
int total = (year - 1) * 365
+(year - 1)/4
-(year - 1)/100
+(year - 1)/400;
int a_b[] = {31,28,31,30,31,30,31,31,30,31,30,31};
if((year%4==0 && year%100 !=0) || (year%100 ==0) )
{
a_b[1] = 29;
}
else
{
a_b[1] =28;
}
for(int i = 0 ; i < a-1 ; i++)
{
total += a_b[i];
}
total += b;
int day= total%7;
String[] week = {"SUN","MON","TUE","WED","THU","FRI","SAT"};
System.out.println(week[day]);
}
}
3항연산자 사용
public class WhatDay {
public String solution(int a, int b) {
String answer = "";
int year = 2016;
boolean leapYear = year % 100 != 0 && year % 4 == 0 || year % 400 == 0;
String[] allDay = new String[leapYear ? 366 : 365];
String[] days = {"SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT"};
int[] month = {31, (leapYear ? 29 : 28), 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int idx = 0;
for (int i = 0; i < allDay.length; i++) {
allDay[i] = days[(i + 5) % 7];
}
for (int i = 0; i < a - 1; i++) {
idx += month[i];
}
idx += b - 1;
answer = allDay[idx];
return answer;
}
}