일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- IntelliJ
- 코테
- DP
- mybatis
- join
- 이펙티브자바
- springboot
- 너비우선탐색
- SQL
- Effective Java
- Database
- BFS
- 탐욕법
- 다이나믹프로그래밍
- DFS
- 정렬
- 백준
- Greedy
- 피보나치
- 깊이우선탐색
- Spring
- 데이터베이스
- 알고리즘
- select
- 우선순위큐
- 프로그래머스
- mariaDB
- java
- 그리디알고리즘
- db
Archives
- Today
- Total
땀두 블로그
[백준] 6064번 - 카잉 달력 본문

x와 y값 중 한 가지를 잡고 그 나머지에다가 M 또는 N값을 더한게 다른 변수의 나머지와 같으면 되게 하는 문제이다. 처음에는 M*N을 탐색하여 시간초과가 나서 최적의 값을 구하기 위해서 M과 N의 최소공배수를 구해 그 값까지만 탐색하여 문제를 해결하였다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class p6064 {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int a = Integer.parseInt(br.readLine());
int[] rst = new int[a];
for (int i = 0; i < a; i++) {
rst[i] = -1;
}
for (int i = 0; i < a; i++) {
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
int M = Integer.parseInt(st.nextToken());// M
int N = Integer.parseInt(st.nextToken());// N
int x = Integer.parseInt(st.nextToken());// x
int y = Integer.parseInt(st.nextToken());// y
int k = M * N / gcd(M, N);
for (int j = 0; j * M < k; j++) {
System.out.println(j * M + x - y);
if ((j * M + x - y) % N == 0) {
rst[i] = j * M + x;
}
}
System.out.println();
}
for (int i = 0; i < a; i++) {
System.out.println(rst[i]);
}
}
public static int gcd(int a, int b) {
if (b == 0) {
return a;
}
return gcd(b, a % b);
}
}
'알고리즘 > 백준' 카테고리의 다른 글
[백준] 16928번 - 뱀과 사다리 게임 (0) | 2022.03.23 |
---|---|
[백준] 11403번 - 경로 찾기 (0) | 2022.03.23 |
[백준] 1992번 - 쿼드트리 (0) | 2022.03.23 |
[백준] 7569번 - 토마토 (0) | 2022.03.23 |
[백준] 11656번 - 접미사 배열 (0) | 2022.03.23 |
Comments