공부한것들을 정리하는 블로그 입니다.
실1 6064 카잉달력 - 브루트포스 건너뛰며해보기 본문
반응형
https://www.acmicpc.net/problem/6064
//카잉달력
public static void bf_6064(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
int t = Integer.valueOf(bf.readLine());
while (t-- > 0) {
String[] line = bf.readLine().split(" ");
int m = Integer.valueOf(line[0]);
int n = Integer.valueOf(line[1]);
int x = Integer.valueOf(line[2]) -1;
int y = Integer.valueOf(line[3]) -1;
boolean ok = false;
// 1. n*m => 전체 시행횟수
// 그런데 값이 +1 되는게 아니라 m만큼 "건너 뛰며 해보기" 방식이므로 시간복잡도는 O(mn) 이 아니라 O(n)이 된다.
// O(mn)의 경우 4만*4만=16억=1.6초 이므로 시간제한에 걸린다.
// 2. int k = x => k의 초기값은 x
// 계산의 편의를 위해 x와 y는 -1씩 해주었으며, 마지막에 결과값에서 +1 해준다.
// 3. k+=m => m의 배수
for (int k = x; k < n*m; k+=m) {
if (k%n == y) {
System.out.println(k+1);
ok = true;
break;
}
}
if (!ok) {
System.out.println(-1);
}
}
}
반응형
'알고리즘 > 백준 - 문제풀이' 카테고리의 다른 글
실2 1260 DFS와 BFS - 그래프의 탐색 (0) | 2022.05.18 |
---|---|
실3 1748 수 이어 쓰기 1 - 브루트포스 건너뛰며해보기 (0) | 2022.05.16 |
골5 14500 테트로미노 - 브루트포스 (0) | 2022.05.08 |
골5 1107 리모컨 - 브루트포스 (0) | 2022.05.07 |
실5 1476번 날짜 계산 - 브루트포스 (0) | 2022.05.01 |
실3 3085번 사탕 문제 - 브루트포스 (0) | 2022.05.01 |
브1 2309번 일곱 난쟁이 - 브루트포스 (0) | 2022.04.26 |
Comments