반응형
Notice
Recent Posts
Recent Comments
Link
지구정복
[수학] 백준 - 카잉 달력 본문
728x90
반응형
https://www.acmicpc.net/problem/6064
-문제해설
처음에는 단순히 반복문 돌리면서 변수 a, b 선언하고 1씩증가하다가 a, b가 x, y와 같아지면 정답을 출력하는 식으로 짰는데 시간초과가 나왔다.
그래서 일일이 일단 다 써보니 규칙을 알아냈다.
예를 들어 5 6 1 4를 구한다고 해보자.
1 - 1, 1 여기
2 - 2, 2
3 - 3, 3
4 - 4, 4
5 - 5, 5
6 - 1, 6 여기
7 - 2, 1
8 - 3, 2
9 - 4, 3
10 - 5, 4
11 - 1, 5 여기
12 - 2, 6
13 - 3, 1
14 - 4, 2
15 - 5, 3
16 - 1, 4 여기
즉 x값에 +X가 되는 곳의 y값을 비교해주면 되는 것이다.
첫 번째 1, 1 에서는 x는 1이지만 y는 4가 아니므로 기각
두 번째 1, 6 에서는 x는 1이지만 y는 4가 아니므로 기각
.
.
.
마지막 1, 4에서 x는 1이고 y는 4이므로 조건에 성립된다.
따라서 16을 출력하면 된다.
이를 코드로 나타내면
for( int j=x; j<(X*Y); j += X ) {
if( j % Y == y )
}
이다.
하지만 이때 조심해야할 점이 만약 y가 Y랑 같은 경우이면 j%Y를 할경우 0이나오게 되므로 이 경우만 따로 코딩해야된다. 자세한 코드는 아래를 참조
-자바
package math;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.StringTokenizer;
public class BJ6064 {
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int t = Integer.parseInt( br.readLine() );
StringTokenizer st;
int X=0, Y=0, x=0, y=0;
for( int i=0; i<t; i++ ) {
st = new StringTokenizer( br.readLine() );
X = Integer.parseInt( st.nextToken() );
Y = Integer.parseInt( st.nextToken() );
x = Integer.parseInt( st.nextToken() );
y = Integer.parseInt( st.nextToken() );
boolean ok = false;
boolean wh = false;
if( Y == y ) wh = true;
for( int j=x; j<(X*Y); j += X ) {
if( wh ) {
if( j%Y == y || j%Y == 0 ) {
System.out.println( j );
ok = true;
break;
}
} else {
if( j%Y == y ) {
System.out.println( j );
ok = true;
break;
}
}
}
if( !ok ) System.out.println( -1 );
}
}
}
-파이썬
from sys import stdin
input = stdin.readline
for _ in range( int(input()) ):
X, Y, x, y = map( int, input().split() )
f = 1
a = 0
if Y == y: a=1
while( x <= X*Y ):
if a == 0:
if( x%Y == y ):
print( x )
f = 0
break
else:
if( x%Y == y or x%Y == 0 ):
print( x )
f = 0
break
x += X
if f: print( -1 )
728x90
반응형
'데이터 엔지니어링 정복 > Algorithm' 카테고리의 다른 글
[브루트포스] 백준 - 리모컨 (0) | 2021.08.30 |
---|---|
[DFS] 백준 - 테트로미노 (0) | 2021.08.27 |
[수학] 백준 - 수 이어쓰기 1 (0) | 2021.08.23 |
[브루트포스] 백준 - 사탕 게임 (0) | 2021.08.22 |
[브루트포스] 백준 - 일곱 난쟁이 (0) | 2021.08.21 |
Comments