πŸ“– [λ°±μ€€μ•Œκ³ λ¦¬μ¦˜ 풀이] Q.1476 λ‚ μ§œ 계산 문제 풀이 -java

πŸ“– 문제

https://www.acmicpc.net/problem/1476

μ€€κ·œκ°€ μ‚¬λŠ” λ‚˜λΌλŠ” μš°λ¦¬κ°€ μ‚¬μš©ν•˜λŠ” 연도와 λ‹€λ₯Έ 방식을 μ΄μš©ν•œλ‹€. μ€€κ·œκ°€ μ‚¬λŠ” λ‚˜λΌμ—μ„œλŠ” 수 3개λ₯Ό μ΄μš©ν•΄μ„œ 연도λ₯Ό λ‚˜νƒ€λ‚Έλ‹€. 각각의 μˆ˜λŠ” 지ꡬ, νƒœμ–‘, 그리고 달을 λ‚˜νƒ€λ‚Έλ‹€.

지ꡬλ₯Ό λ‚˜νƒ€λ‚΄λŠ” 수λ₯Ό E, νƒœμ–‘μ„ λ‚˜νƒ€λ‚΄λŠ” 수λ₯Ό S, 달을 λ‚˜νƒ€λ‚΄λŠ” 수λ₯Ό M이라고 ν–ˆμ„ λ•Œ, 이 μ„Έ μˆ˜λŠ” μ„œλ‘œ λ‹€λ₯Έ λ²”μœ„λ₯Ό 가진닀. (1 ≀ E ≀ 15, 1 ≀ S ≀ 28, 1 ≀ M ≀ 19)

μš°λ¦¬κ°€ μ•Œκ³ μžˆλŠ” 1년은 μ€€κ·œκ°€ μ‚΄κ³ μžˆλŠ” λ‚˜λΌμ—μ„œλŠ” 1 1 1둜 λ‚˜νƒ€λ‚Ό 수 μžˆλ‹€. 1년이 지날 λ•Œλ§ˆλ‹€, μ„Έ μˆ˜λŠ” λͺ¨λ‘ 1μ”© μ¦κ°€ν•œλ‹€. λ§Œμ•½, μ–΄λ–€ μˆ˜κ°€ λ²”μœ„λ₯Ό λ„˜μ–΄κ°€λŠ” κ²½μš°μ—λŠ” 1이 λœλ‹€.

예λ₯Ό λ“€μ–΄, 15년은 15 15 15둜 λ‚˜νƒ€λ‚Ό 수 μžˆλ‹€. ν•˜μ§€λ§Œ, 1년이 μ§€λ‚˜μ„œ 16년이 되면 16 16 16이 μ•„λ‹ˆλΌ 1 16 16이 λœλ‹€. μ΄μœ λŠ” 1 ≀ E ≀ 15 λΌμ„œ λ²”μœ„λ₯Ό λ„˜μ–΄κ°€κΈ° λ•Œλ¬Έμ΄λ‹€.

E, S, M이 μ£Όμ–΄μ‘Œκ³ , 1년이 μ€€κ·œκ°€ μ‚¬λŠ” λ‚˜λΌμ—μ„œ 1 1 1μΌλ•Œ, μ€€κ·œκ°€ μ‚¬λŠ” λ‚˜λΌμ—μ„œ E S M이 μš°λ¦¬κ°€ μ•Œκ³  μžˆλŠ” μ—°λ„λ‘œ λͺ‡ 년인지 κ΅¬ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ‹œμ˜€.

μž…λ ₯

첫째 쀄에 μ„Έ 수 E, S, M이 주어진닀. λ¬Έμ œμ— λ‚˜μ™€μžˆλŠ” λ²”μœ„λ₯Ό μ§€ν‚€λŠ” μž…λ ₯만 주어진닀.

좜λ ₯

첫째 쀄에 E S M으둜 ν‘œμ‹œλ˜λŠ” κ°€μž₯ λΉ λ₯Έ 연도λ₯Ό 좜λ ₯ν•œλ‹€. 1 1 1은 항상 1이기 λ•Œλ¬Έμ—, 정닡이 μŒμˆ˜κ°€ λ‚˜μ˜€λŠ” κ²½μš°λŠ” μ—†λ‹€.

πŸ” 접근법

boj Q.1476 λ‚ μ§œ 계산 λ¬Έμ œμž…λ‹ˆλ‹€.

λ¬Έμ œμ— 주어진 쑰건만 잘 κ³ λ €ν•˜λ©΄ μ‰½κ²Œ 풀이가 κ°€λŠ₯ν•©λ‹ˆλ‹€.

1년이 증가할 λ•Œλ§ˆλ‹€ E(earth) S(sun) M(moon)도 1μ”© μ¦κ°€ν•˜λŠ”λ°

E의 λ²”μœ„λŠ” μ΅œλŒ€ 15κΉŒμ§€ S의 λ²”μœ„λŠ” μ΅œλŒ€ 28κΉŒμ§€ M의 λ²”μœ„λŠ” μ΅œλŒ€ 19κΉŒμ§€μž…λ‹ˆλ‹€.

이 λ²”μœ„λ₯Ό λ²—μ–΄λ‚˜λ©΄ λͺ¨λ‘ 1둜 λŒμ•„κ°€κ²Œ λ©λ‹ˆλ‹€.

이λ₯Ό μ΄μš©ν•΄

brute force λ°©λ²•μœΌλ‘œ 풀이가 κ°€λŠ₯ν•©λ‹ˆλ‹€.

1 1 1 λΆ€ν„° μ°¨λ‘€λŒ€λ‘œ 1λ…„μ”© μ¦κ°€μ‹œν‚€λ©°

earth, sun ,moon 값을 ν™•μΈν•˜μ—¬

λ¬Έμ œμ—μ„œ 주어진 E S M κ³Ό 같아지면 λ¬Έμ œμ—μ„œ μš”κ΅¬ν•˜λŠ” κ°€μž₯ λΉ λ₯Έ 연도가 λ©λ‹ˆλ‹€.

πŸ’» μ½”λ“œ

public class Main_1476 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        int e,s,m;
        int year = 0;

        String[] split = br.readLine().split(" ");
        e = Integer.parseInt(split[0]);
        s = Integer.parseInt(split[1]);
        m = Integer.parseInt(split[2]);

        int earth = 0;
        int sun = 0;
        int moon = 0;
        while (earth != e || sun != s || moon != m){
            year++;
            if(++earth > 15){
                earth = 1;
            }
            if(++sun > 28){
                sun = 1;
            }
            if(++moon > 19){
                moon = 1;
            }
        }

        bw.write(String.valueOf(year));

        br.close();
        bw.flush();
        bw.close();
    }
}
Written on May 27, 2021