본문 바로가기

ALGORITHM

백준 16463 13일의 금요일 (Java)

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);
	}
}

 

'ALGORITHM' 카테고리의 다른 글

백준 22251 빌런 호석 (Java)  (0) 2023.06.01
백준 9935 문자열 폭발 (Java)  (0) 2023.05.31
백준 1926 그림 (Java)  (1) 2023.05.29
백준 13164 행복 유치원 (Java)  (0) 2023.05.28
백준1245 농장 관리 (Java)  (0) 2023.05.27