백준/코드 플러스 (알고리즘 기초 - 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