728x90
반응형
https://www.acmicpc.net/problem/1924
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int month = sc.nextInt();
int day = sc.nextInt();
int[] months = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
String[] days = { "SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT" };
int total = 0;
if ((month - 1) >= 1) {
for (int i = 1; i <= month - 1; i++) {
total += months[i];
}
}
total += day;
System.out.println(days[total % 7]);
}
}
|
cs |
처음에는 월별로 메서드를 만드는 어마어마하게 비효율적인 코드를 썼는데, 물론 성공했지만, 답만 맞게 하는 건 아무 의미 없는 것 같아서 구글링 하다가
https://rightbellboy.tistory.com/27
이분 코드를 참고했다.
1월 1일은 days[1] 이므로 MON이 출력되고,
3월 14일은 31+28+14=73인데 여기서 7로 나누면 나머지가 3이다. 그러므로 WEDr가 출력되는 것을 알 수 있다.
1월1일의 요일이 언제인지 확인하고 작성하면 어떤 윤년빼고는 다 가능하다.
글을 작성하는 시점인 2021년은 1월1일이 금요일이였다. 즉 나머지가 1이 되는게 금요일이라는 것이다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int month = sc.nextInt();
int day = sc.nextInt();
int[] months = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
String[] days = { "THU", "FRI", "SAT", "SUN", "MON", "TUE", "WED" };
int total = 0;
if ((month - 1) >= 1) {
for (int i = 1; i <= month - 1; i++) {
total += months[i];
}
}
total += day;
System.out.println(days[total % 7]);
}
}
|
cs |
2021년 7월 20일은 화요일로 정확하게 나온다.
728x90
반응형
'알고리즘 > 입출력' 카테고리의 다른 글
[java 백준] 브론즈 3/ 2442번 별찍기-5 (0) | 2021.07.26 |
---|---|
[java 백준] 브론즈 3/ 2441번 별찍기 -4 (0) | 2021.07.20 |
[java 백준] 브론즈 2/11721 번 열 개씩 끊어 출력하기 (0) | 2021.07.20 |
[java 백준] 브론즈 2/ 11720번 숫자의 합 (0) | 2021.07.20 |
[java 백준] 브론즈 3/ 11718번 그대로 출력하기 (0) | 2021.07.20 |
댓글