ALGORITHM
백준 16463 13일의 금요일 (Java)
공부하는_다온
2023. 5. 30. 22:00
1. 문제 링크
https://www.acmicpc.net/problem/16463
16463번: 13일의 금요일
재운이는 이 구역의 소문난 오컬트 매니아다. 늘 도서관에서 오컬트 서적을 읽고 외계문물 스터디에 참여하던 재운이는 어느 날 엄청난 소문을 듣게 되었다. 소문의 정체는 지구의 미래에 관한
www.acmicpc.net
2. 문제 및 입출력예제
3. 문제 풀이
1. 월별 날짜를 배열에 저장해둔다.
2. N년까지 가면서 처음에 13일로 시작한 날짜가 금요일인지 판단한다.
2-1. 2019년 1월 첫 금요일이 4일이어서 7로 나눈 나머지가 4인 경우를 찾았다.
3. 월별 일수를 더한다.
4. 윤년인 경우에는 일수에 1을 더한다.
4. 코드
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
int[] num = {31,28,31,30,31,30,31,31,30,31,30,31};
int result = 0;
int day = 13;
for(int i = 2019; i<N+1; i++) {
for(int j=0; j<12;j++) {
if(day % 7 == 4) { //금요일인지 //2019년 1월 첫 금요일이 4일
result++;
}
day+=num[j];
if(j==1 && (i%400==0 || (i%4==0 && i%100!=0))) { //윤년
day++;
}
}
}
System.out.println(result);
}
}