728x90
🔗 문제 링크
https://www.acmicpc.net/problem/1476
📌 문제 개요
E(1~15), S(1~28),M(1~19) 세 숫자가 주어진다.
각 숫자는 정해진 주기로 반복되며, 입력값과 동시에 일치하는 가장 빠른 연도를 구하는 문제
📌 접근 방법
세 개의 주기를 각각 직접 증가시키면서
입력값과 일치하는 연도를 찾는 방식으로 해결
최대 반복 횟수는LCM(15, 28, 19) = 7980 이므로
완전 탐색으로도 충분히 해결 가능
📌 핵심 아이디어
year= 1부터 시작ec,sc,mc를 각각 1부터 시작- 매 반복마다 1씩 증가
- 범위를 초과하면 1로 초기화
- 입력값과 동시에 일치하면 종료
즉, 세 개의 시계를 동시에 돌리는 방식
📌 전체 코드
package no_1476;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class No1476 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
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;
int ec = 1;
int sc = 1;
int mc = 1;
while (true) {
if (ec == e && sc == s && mc == m) {
System.out.println(year);
break;
}
ec++;
sc++;
mc++;
year++;
if (ec > 15) ec = 1;
if (sc > 28) sc = 1;
if (mc > 19) mc = 1;
}
}
}
📌 정리
- 서로 다른 주기를 가지는 값을 동시에 맞추는 문제
- 브루트포스로 충분히 해결 가능
- 핵심은 주기 초과 시 1로 초기화
- 최대 반복 7980 → 시간 부담 없음
728x90
'코테(Solved.ac + Programmers)' 카테고리의 다른 글
| [백준] 9655번 : 돌 게임 (JAVA) (0) | 2026.02.20 |
|---|---|
| [백준] 17478번 : 재귀함수가 뭔가요? (JAVA) (0) | 2026.02.19 |
| [백준] 10815번 : 숫자 카드 (JAVA) (0) | 2026.02.17 |
| [백준] 25206번 : 너의 평점은 (JAVA) (0) | 2026.02.16 |
| [백준] 1789번 : 수들의 합 (JAVA) (0) | 2026.02.15 |