https://www.acmicpc.net/problem/1924
풀이
1. Calendar 함수를 이용(java.util.Calendar)
=> Calendar cal = Calendar.getInstance(); 선언시 오늘 날짜로 객체가 생성되며
cal.set(year, month-1, day); 로 특정 날짜로의 변경도 가능하다.
cal.get(Calendar.DAY_OF_WEEK); 사용시 해당 날짜의 요일을 숫자 값으로 알 수 있는데 순서대로 일(1), 토(7) 순서이다.
입력받은 날짜를 set 함수로 설정해 준 후 각 요일명을 넣어둔 배열에서 인덱스를 찾아 출력한다
2. 직접 달력의 날짜를 계산
=> 각각의 월마다 끝 날짜가 주어졌으므로 입력받은 월의 전월까지 일수를 계산하고, 입력받은 일의 날짜를 더한 숫자에서 나누기 7을 하여 요일을 매핑한다. 여기서는 나머지가 1인 경우 월요일, 나머지가 6인경우 토요일이다.
소스코드
더보기
// 1번 방법
import java.util.Calendar;
import java.util.Scanner;
public class Main {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
int b = sc.nextInt();
String[] week = {"SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT"};
Calendar c = Calendar.getInstance();
c.set(2007, a-1, b);
int day_of_week = c.get(Calendar.DAY_OF_WEEK);
System.out.println(week[day_of_week-1]);
}
}
// 2번 방법
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
int b = sc.nextInt();
int day = b;
int[] month = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
String[] week = {"SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT"};
for(int i=0; i<a-1; i++)
day += month[i];
System.out.println(week[day%7]);
}
}
반응형