곽로그

[백준 1924] 2007년 본문

알고리즘/백준

[백준 1924] 2007년

일도이동 2019. 4. 9. 15:08
반응형

 

 

1924번: 2007년

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

www.acmicpc.net

접근

 월, 일이 주어졌을 때 해당하는 요일을 구하는 문제이다. 요일은 7요일이다. 따라서 일수를 7로 나눈 나머지가 같은 일은 같은 요일이 된다. 예를 들어

 

월 화 수 목 금 토 일

 1  2  3   4   5   6  7

 8  9  10 11 12 13 14 

 

이렇게 주어졌다고 할 때 1일 과 8일은 월요일인데, 1과 8은 7로 나눈 나머지가 1이다. 마찬가지로 2와 9는 7로 나눈 나머지가 2로 같다. 

 

 따라서 주어진 월, 일이 1월 1일 부터 경과된 총 일수를 구한다음, 총 일수를 7로 나눈 나머지를 구한다. 그 나머지가 0이면 일요일, 1이면 월요일 이렇게 구하면 된다. 

 

첫번째 풀이

 

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner in=new Scanner(System.in);
		int x=in.nextInt();
		int y=in.nextInt();
		int sum=0;
		
		switch (x){
		case 1:
			sum=y;
			break;
		case 2:
			sum=31+y;
			break;
		case 3:
			sum=31+28+y;
			break;
		case 4:
			sum=31+28+31+y;
			break;
		case 5:
			sum=31+28+31+30+y;
			break;
		case 6:
			sum=31+28+31+30+31+y;
			break;
		case 7:
			sum=31+28+31+30+31+30+y;
			break;
		case 8:
			sum=31+28+31+30+31+30+31+y;
			break;
		case 9:
			sum=31+28+31+30+31+30+31+31+y;
			break;
		case 10:
			sum=31+28+31+30+31+30+31+31+30+y;
			break;
		case 11:
			sum=31+28+31+30+31+30+31+31+30+31+y;
			break;
		case 12:
			sum=31+28+31+30+31+30+31+31+30+31+30+y;
			break;
			
		}
		int day=sum%7;
		switch(day) {
		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;
			
		}
	}
}

 

이 코드는 해당 월에 대한 일수를 쭉 더해서 구했는데, 이걸 직접 쓰는게 상당히 귀찮다. 이걸 조금 편하게 하려면 배열을 선언하면 된다. 즉 월에 해당하는 일이 있는 배열을 선언해서 for문으로 해당 인덱스 까지 더해주면 된다. 

 

int[] daysInMonth=new {31,28,31,30,31,30,31,31,30,31,30,31};
for(int i=0;i<x-1;i++) {
	sum+=daysInMonth[i]; //x의 전월 까지 총 일수 
	sum+y; 
}

이렇게

반응형

'알고리즘 > 백준' 카테고리의 다른 글

[백준 11720] 숫자의 합  (0) 2019.04.15
[백준 8393] 합  (0) 2019.04.15
[백준 2441] 별찍기 -4  (0) 2019.04.09
[백준 2440] 별찍기 -3  (0) 2019.04.09
[백준 2439] 별찍기 -2  (0) 2019.04.02
Comments