-
😭백준 6064 - 카잉 달력백준 algorithm 2020. 6. 2. 22:34반응형
=> 브루트 포스 문제입니다.
=> 시뮬레이션 문제로 생각하여 모든 경우의 수를 확인할 경우 시간 초과의 덫에 걸리게 됩니다.
=> 우선 x를 맞춰두고 그 이후에 맞는 y가 있는지 확인하여야 합니다.
=> 찾은 값이 두 수의 최소공배수를 넘지 않도록 유의하여야 합니다.
최소공배수를 구하는 식은 최대공약수를 구하는 식의 도움을 받습니다.
저는 유클리드 호제법을 사용하였습니다.
int gcd(int a, int b) { while (b != 0) { int r = a % b; a = b; b = r; } return a; }
int lcm(int a, int b) { return a * b / gcd(a, b); }
<code>
#include <iostream> #include <algorithm> #include <string> using namespace std; int gcd(int a, int b) { while (b != 0) { int r = a % b; a = b; b = r; } return a; } int lcm(int a, int b) { return a * b / gcd(a, b); } int Kaiing(int M, int N, int x, int y) { int ans; int Tlcm= lcm(M,N); for(int i=x; i<Tlcm; i+=M) { int temp = ( i % N == 0) ? N : i % N; ans = i; if (temp == y) { return i; } } if( ans > Tlcm) {return -1;} return -1; } int main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); int TC; cin >> TC; for(int i=0; i<TC; i++) { int M,N,x,y; cin >> M >> N >> x >> y; cout << Kaiing(M, N, x, y)<<'\n'; } }
=> 저 역시 제대로 이해하지 못한듯하여 다시 봐야 할 문제입니다.
반응형'백준 algorithm' 카테고리의 다른 글
백준 15650 - N과 M(2) (0) 2020.06.03 백준 1748 - 수 이어 쓰기 1 (0) 2020.06.02 백준 1107 - 리모컨 (0) 2020.06.02 백준 1476 - 날짜 계산 (0) 2020.06.01 백준 3085 - 사탕 게임 (0) 2020.05.31