본문 바로가기
백준

[백준] 1476번 : 날짜 계산 – JAVA [자바]

by Hongwoo 2022. 4. 21.
반응형

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

 

1476번: 날짜 계산

준규가 사는 나라는 우리가 사용하는 연도와 다른 방식을 이용한다. 준규가 사는 나라에서는 수 3개를 이용해서 연도를 나타낸다. 각각의 수는 지구, 태양, 그리고 달을 나타낸다. 지구를 나타

www.acmicpc.net

 


  • 문제

 

 


  • 문제 풀이

백준 1476번 날짜 계산은 실버 5 난이도의 수학 문제이다. 이 문제에서는 새로운 연도가 소개된다. 지구 연도는 e, 태양의 연도는 s, 그리고 달의 연도는 m이다. 즉, 1년은 e = 1, s = 1, m = 1이다. 그리고 각 연도마다 다른 범위가 있다. 범위들은 다음과 같다: 1 ≤ e ≤ 15, 1 ≤ s ≤ 28, 1 ≤ m ≤ 19. 각 범위를 초과하면 다시 1이 된다. e, s, m으로 연도가 주어졌을 때 가장 빠른 연도를 출력하면 되는 문제이다.

 

이 문제는 단순한 while-loop을 이용해서 풀겠다. 1년에서 시작해서 1년이 지날 때마다 e, s, 그리고 m을 각각 1씩 증가시켜 준다. 그리고 각 연도의 범위를 초과할 때 다시 1로 초기화시켜주고 이 연도가 e, s, m과 동일할 때 그 연도를 출력한다.

 


  • 코드

 

import java.io.*;
import java.util.*;
public class Main {
    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 E = 0;
        int S = 0;
        int M = 0;
        int year = 0;
        while (true) {
            year++;
            E++;
            S++;
            M++;
            if (E == 16) E=1;
            if (S==29) S=1;
            if (M==20) M=1;
            if (e == E && m == M && S == s) break;
        }
        System.out.print(year);
    }
}

 


  • 후기

처음에 이 문제를 접했을 때 %를 이용해서 풀려고 하다가 그냥 단순한 loop을 이용했는데 풀렸다.

 

반응형

댓글