[BOJ/C++]

다곰·2023년 10월 18일
0

우당탕탕 코테준비

목록 보기
91/98

🥈 silver 5

✏️ 1차 솔루션

⭐️ 수학
모든 숫자가 같지 않다면 15년 이후인데 가능한 년도 중에 가장 작아야하기 때문에 15를 더해가며 탐색하는 것으로 정의함
탐색 년도를 s,m 의 최대값으로 나눴을 때, 나머지가 각각 s,m 과 일치하면 해당 년도가 정답

🚨 trouble

시간초과
e 로부터 15년씩 갱신하면서 모든 수가 나누어 떨어지는 년도를 구하면 28의 배수나 19의 배수 년도가 정답일 경우, 무한 로프에 빠짐

✏️ 최종 솔루션

년도를 계속 늘려가면서 현재 년도 - e, 현재 년도 - s, 현재 년도 - m 을 각각의 최대값으로 나누어 떨어지면 정답 년도
➡️ 년도가 각각의 최대치를 넘어서면 모든 값이 중구난방이 되기 때문에 처음 년도를 제외하고 현재 년도가 각각의 배수가 되는지 확인하는 것
❗️ 음의 배수가 나타나는 경우는 없기 때문에 현재 년도에서 각 입력값을 빼줘도 문제 없음

📌 self feedback

수학분야는 최대한 많은 유형 풀어보는 수밖에 없다..

✏️ 최종 code

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

int main() {
    int e,s,m;
    cin >> e >> s >> m;

    int y=1;

    while(1) {
        if(((y-e)%15==0)&&((y-s)%28==0)&&((y-m)%19==0)) break;
        y++;
    }
    
    cout << y;
}
profile
다교미의 불꽃 에러 정복기

0개의 댓글