문제 : boj25494
필요 알고리즘 개념
- 브루트포스 (완전탐색)
- 모든 경우를 다 살펴보는 브루트포스 문제이다.
- 나머지 연산 (기본 수학)
- 나머지 연산이 무엇인지, 사용중인 언어에서 어떻게 계산할 수 있는지 알아야 한다.
※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다.
풀이
각 테스트 케이스마다, a,b,c의 모든 쌍을 확인하더라도 O(60^3) 의 시간복잡도이다. 따라서 모든 테스트케이스라고 해도 O(100*60^3)으로 시간복잡도는 충분하다. 그러니 모든 경우를 다 살펴보면 된다.
3중 반복문으로 x,y,z를 호가정해서 문제에서 제시된 x mod y == y mod z == z mod x 인 경우를 카운팅 해주면 된다. 자마에서 mod(나머지 연산)은 '%'로 수행할 수 있다.
코드 : github
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
private void solution() throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int t = Integer.parseInt(br.readLine());
StringBuilder sb = new StringBuilder();
while (t-->0) {
StringTokenizer st = new StringTokenizer(br.readLine());
int a = Integer.parseInt(st.nextToken());
int b = Integer.parseInt(st.nextToken());
int c = Integer.parseInt(st.nextToken());
int cnt = 0;
for (int i = 1; i <= a; i++) {
for (int j = 1; j <= b; j++) {
for (int k = 1; k <= c; k++) {
if (i%j==j%k && j%k==k%i && i%j==k%i) {
cnt++;
}
}
}
}
sb.append(cnt).append('\n');
}
System.out.println(sb);
}
public static void main(String[] args) throws Exception {
new Main().solution();
}
}
'PS > BOJ' 카테고리의 다른 글
[자바] 백준 25496 - 장신구 명장 임스 (java) (0) | 2022.08.25 |
---|---|
[자바] 백준 25495 - 에어팟 (java) (0) | 2022.08.24 |
[자바] 백준 17353(펜윅트리) - 하늘에서 떨어지는 1, 2, ..., R-L+1개의 별 (java) (0) | 2022.08.23 |
[자바] 백준 10174 - 팰린드롬 (java) (0) | 2022.08.22 |
[자바] 백준 25304 - 영수증 (java) (0) | 2022.08.21 |
댓글