문제
오늘은 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중 하나를 출력한다.
풀이
- 원래 같았으면 월별 날짜를 다 더해서 7로 나누는 식으로 풀었겠지만, JAVA를 배우는 입장이라 내장 모듈을 배우고 싶어 날짜와 관련된 모듈을 사용해 풀었다.
덕분에 시간과 메모리는 좀 많이 쓰는 코드이다 😂
- 요일은
Calendar
클래스의DAY_OF_WEEK
변수를 통해 얻을 수 있다.
- 하지만
Calendar
클래스에 원하는 날짜를 입력하려면Date
객체로 시간을 설정해야한다.
Date
클래스는 시간 초를 인자로 받아 객체를 생성한다.오늘은 곧 사라질 생성자를 통해 편하게 입력했다. ㅎㅎ..
- 이제
Calendar
클래스의setTime
함수에Date
객체를 인자로 주어 시간을 설정한다.
Calendar.get
함수를 통해 요일에 대한 인덱스를 받아온다.
- 미리 정의해둔 요일 배열에서 인덱스로 요일을 출력한다.
- 끝!
답
import java.util.Calendar;
import java.util.Date;
import java.util.Scanner;
public class Two00seven {
public static void main(String[] args){
String[] day = new String[]{"SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT"};
Scanner scanner = new Scanner(System.in);
int month = scanner.nextInt();
int date = scanner.nextInt();
Date when = new Date(107, month-1, date);
Calendar calendar = Calendar.getInstance();
calendar.setTime(when);
System.out.println(day[calendar.get(calendar.DAY_OF_WEEK)-1]);
}
}
서버에 제출할 경우, 클래스 명을 "Main"으로 바꿔야한다.
Uploaded by Notion2Tistory v1.1.0