문제

날짜 계산 백준 1476번


리뷰

주어진 E S M이 몇년도 인지 맞추는 문제다. (1 ≤ E ≤ 15, 1 ≤ S ≤ 28, 1 ≤ M ≤ 19)

년도는 최소 1년 부터 15 x 28 x 19 년까지 가능하니까 완전 탐색으로 풀 수 있다.

E, S, M 모두 15, 28, 19 를 주기로 반복되니까

year에서 E를 뺀 수가 15로 나누어 떨어지는지 확인하면 된다.

S, M 을 빼서 똑같이 확인한다.


코드

#include <iostream>
#include <algorithm>
#define E_MAX 15
#define S_MAX 28
#define M_MAX 19
using namespace std;

int E, S, M;

int main(void){

    freopen("input.txt", "rt", stdin);

    cin >> E >> S >> M;

    int year = 1;

    while(1){ // 15, 28, 19의 배수가 되면 종료  

        if( (year-E) % E_MAX == 0 &&  (year-S) % S_MAX == 0  &&  (year-M) % M_MAX == 0 ){
            cout << year;
            break;
        }

        year++;
    }

    return 0;

}
728x90

'알고리즘 > 백준' 카테고리의 다른 글

퇴사 백준 14501  (0) 2020.09.03
차이를 최대로 백준 10819번 c++  (0) 2020.09.03
카잉달력 백준 6064번  (0) 2020.09.03
테트로미노 백준 14500번  (0) 2020.09.03
오큰수 백준 17298번 c++  (0) 2020.09.03

+ Recent posts