본문 바로가기
알고리즘/문제

[백준] 16463. 13일의 금요일 <C++>

by 코드 이야기 2020. 3. 16.
728x90

www.acmicpc.net/problem/16463

 

16463번: 13일의 금요일

재운이는 이 구역의 소문난 오컬트 매니아다. 늘 도서관에서 오컬트 서적을 읽고 외계문물 스터디에 참여하던 재운이는 어느 날 엄청난 소문을 듣게 되었다. 소문의 정체는 지구의 미래에 관한

www.acmicpc.net

 

 

#include <iostream>
#include <string.h>
using namespace std;

int main() {
  int n, cnt=0, m[12]={31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
  string yo[7]={"월","화","수","목","금","토","일"};
  long long day=13;  //월의 13일의 요일이 필요하므로 13부터 시작

  cin>>n;

  for(int i=2019; i<=n; i++) {
    if((i%4==0 && i%100!=0) || i%400==0) {  //참==윤년 
      m[1]=29;   //2월을 29일로 수정
    }
    else {   //윤년이 아님.(평년임)
      m[1]=28;    //2월을 28일로 수정
    }
    
    for(int j=0; j<12; j++) { //1~12월까지 반복
      if(yo[day%7]=="금")   //13일이 금요일인지 판단 
        cnt++;   //금요일이므로 카운트를 해줌.
        
      day+=m[j];    //그 달의 날짜를 더해줌.
    }
  }
  cout<<cnt;    //출력
}
728x90

댓글