📝 문제
🔑 풀이 과정
규칙을 찾아서 풀이하면 된다.
1년일 때, E = 1, S = 1, M = 1
...
15년일 때, E = 15, S = 15, M = 15
16년일 때, E = 1, S = 16, M = 16
...
18년일 때, E = 3, S = 18, M = 18
19년일 때, E = 4, S = 19, M = 19
20년일 때, E = 5, S = 20, M = 1
E, S, M의 각 최댓값(15, 28, 19)를 넘기면 다시 1부터 카운팅이 되는것을 볼 수 있다.
즉, 각 최댓값에 어떠한 수를 곱해준 뒤 현재의 E, S, M을 더하면 연도가 나온다.
이걸 거꾸로해서 연도에서 현재의 E, S, M을 빼준 뒤, 그것을 각 최댓값으로 나눴을 때 전부 0이 나오는(나누어 떨어지는) 연도를 구해주면 된다.
🔓 답안
import java.io.*;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
final int maxE = 15;
final int maxS = 28;
final int maxM = 19;
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st = new StringTokenizer(br.readLine());
int E = Integer.parseInt(st.nextToken());
int S = Integer.parseInt(st.nextToken());
int M = Integer.parseInt(st.nextToken());
int year = 1;
for(year = 1; ; year++){
if((((year - E) % maxE) == 0) && (((year - S) % maxS) == 0) && (((year - M) % maxM) == 0))
break;
}
bw.write(year + "\n");
bw.flush();
bw.close();
}
}
🖤 알고리즘 분류
- 수학
- 브루트포스 알고리즘
- 정수론
'PS > Baekjoon' 카테고리의 다른 글
[Baekjoon] 15727 - 조별과제를 하려는데 조장이 사라졌다 (0) | 2023.06.26 |
---|---|
[Baekjoon] 19532 - 수학은 비대면강의입니다 (0) | 2023.06.26 |
[Baekjoon] 1475 - 방 번호 (0) | 2023.06.22 |
[Baekjoon] 4673 - 셀프 넘버 (0) | 2023.06.21 |
[Baekjoon] 10866 - 덱 (0) | 2023.06.20 |
댓글