본문 바로가기
Tech/Algorithm

백준)Q.1924_2007년

by 소라소라잉 2019. 4. 15.

문제

오늘은 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 1

예제 출력 1

MON

 

예제 입력 2

3 14

예제 출력 2

WED

 

< 나의 풀이 >

import java.util.*;

public class Main {

public static void main(String[] args) {

Scanner sc = new Scanner(System.in);
int[] month = new int[] { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
String[] week = new String[] { "MON", "TUE", "WED", "THU", "FRI", "SAT", "SUN" };

int mon = sc.nextInt();
int day = sc.nextInt();
int sum = 0;
int count = 0;

for (int i = 0; i < mon; i++) {
sum += month[i];
}

sum = sum - month[mon - 1] + day;
count = sum % 7;
if (count == 0)
System.out.println("SUN");
else
System.out.println(week[count - 1]);

}

}

월/일을 입력받고 해당하는 요일을 출력하는 문제이다.

처음엔 calender 머시깽이를 써야하는건가... 싶었지만

'모르면 아는 선에서 풀어보자'는 주의라 복잡시러운 건 안(못)썼다.

 

배열 month에는 각 월도에 해당하는 일자가, 배열 week에는 요일이 담겨져 있다.  

반복문으로 사용자가 입력한 월도의 이전 월도까지 일수를 모두 더하고, 사용자가 입력한 일수(day)를 추가적으로 더한 후 7로 나누고, 자투리 일수(0~6)의 원소가 해당 요일이 되는 로직이다.

 

for (int i = 0; i < mon; i++) {
sum += month[i];
}

sum = sum - month[mon - 1] + day;

사용자가 입력한 월도까지 sum에 합산하고, 입력된 월도는 빼준 후 day를 합산.

 

count = sum % 7;
if (count == 0)
System.out.println("SUN");
else
System.out.println(week[count - 1]);

count에 sum을 7로 나눈 나머지(자투리 일수)를 저장.

만약 나머지가 0이면 -> "SUN"출력

그 외는 해당하는 week의 원소-1을 출력해준다. 

'Tech > Algorithm' 카테고리의 다른 글

백준)Q.9012_괄호  (0) 2019.04.18
백준)Q.1874_스택 수열  (0) 2019.04.18
백준)Q.10250_ACM 호텔  (0) 2019.04.15
백준)Q.1011_Fly me to the Alpha Centauri  (0) 2019.04.12
백준)Q.2292_벌집  (0) 2019.04.12

댓글