본문 바로가기

백준알고리즘

[3단계 for문 사용해보기]1924

문제

오늘은 2007년 1월 1일 월요일이다. 그렇다면 2007년 x월 y일은 무슨 요일일까? 이를 알아내는 프로그램을 작성하시오.

입력

첫째 줄에 빈 칸을 사이에 두고 x(1≤x≤12)와 y(1≤y≤31)이 주어진다. 참고로 2007년에는 1, 3, 5, 7, 8, 10, 12월은 31일까지, 4, 6, 9, 11월은 30일까지, 2월은 28일까지 있다.

출력

첫째 줄에 x월 y일이 무슨 요일인지에 따라 SUN, MON, TUE, WED, THU, FRI, SAT중 하나를 출력한다.

예제 입력 

1 1

예제 출력 

MON





























[소스코드]

import java.util.*;
class Main{
public static void main(String[] args){
Scanner sca = new Scanner(System.in);
int x = sca.nextInt();
int y = sca.nextInt();
int days = 0;
int[] monthOfDay = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
for(int i = 1; i<x; i++){
days += monthOfDay[i-1];
}
days += y;
int o = days%7;
switch(o){
case 0 :
System.out.println("SUN");
break;
case 1 :
System.out.println("MON");
break;
case 2 :
System.out.println("TUE");
break;
case 3 :
System.out.println("WED");
break;
case 4 :
System.out.println("THU");
break;
case 5 :
System.out.println("FRI");
break;
case 6 :
System.out.println("SAT");
break;
}
}
}


[풀이]

1. 미리 한달의 일수를 담고있는 배열을 선언한다.

2. 사용자가 월을 입력하면 그떄까지의 모든 일수를 더하는 for문을 돌린다. 이때 미리 선언한 배열을 이용하여 일수를 더한다.

3. 1월 1일이 월요일이었으므로 일수를 7로 나눈 나머지가 1이면 월요일 , 2면 화요일 이런식으로 유추할수가 있다.

4. 나머지에 맞는 요일을 출력한다.