백준/코드 플러스 (알고리즘 기초 - 2) (완)
[백준] 1476번 - 날짜 계산 (JAVA)
MoveForward
2023. 2. 9. 21:06
728x90
[백준] 1476번 - 날짜 계산 (JAVA)

[접근 방법]
처음엔 최대 공배수 문제라고 판단 하였지만, 예제 3번 E = 1(+15), S = 2(+28), M = 3(+19)의 최대 공배수를 계산 한 결과
"1680" 이 나오게 되었다.
브루트포스 알고리즘 방식으로 모든 경우의 수를 고려해야 한다.
E, S, M 3개의 숫자 중 최댓값인 수를 제외하고 나머지 수를 각각 +15 +28 +19를 수행한다.
최종적으로 E = S = M을 만족하는 수 중 가장 작은 수를 출력한다.
[JAVA 코드]
// 1476번 - 날짜 계산
import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
// 0. 입출력 선언 / 초기화
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 result;
while(true){
int max = Math.max(E, Math.max(S, M));
if (E != max){
E += 15;
}
if (S != max){
S += 28;
}
if (M != max){
M += 19;
}
if (E == S && S == M){
result = E;
break;
}
}
bw.write(result + "\n");
br.close();
bw.close();
}
}
[Rewind]
1. 어려웠던 점
- 새로운 유형의 문제이니 만큼, 접근 방법을 찾는 것이 어려웠다.
2. 알게된 점
-
3. 개선 방향
- 비슷한 문제를 여러개 풀어야 한다.
728x90