곽로그
[백준 1924] 2007년 본문
반응형
접근
월, 일이 주어졌을 때 해당하는 요일을 구하는 문제이다. 요일은 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