본문 바로가기

PROGRAMMING/ALGORITHM

[백준] 1476번 날짜 계산 JAVA

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

 

1476번: 날짜 계산

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

www.acmicpc.net

입력예제

날짜 변환을 요구하는 문제.

각 자릿수가 16, 28, 19까지 있는 날짜 형식을 우리가 사용하는 연도로 변환해야 한다.

1년이 지날 때마다 각 자리에 1씩 더해지는데 각 자리의 리미트를 넘으면 1로 리셋되며 거기서부터 다시 카운팅 한다.

 

풀이 방법

어차피 자릿수가 정해져 있음으로 나올 수 있는 연도의 MAX값이 16*28*19

고로 처음에 아예 이 연도를 세 자릿수 연도로 변환을 다 해놓고

입력값에 맞는 연도를 찾아 출력하는 방식으로 풀었다.

 

코드

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        int[] inputDate= new int[3];
        int size = 15*28*19; // 3자리수 연도로 출력할 수 있는 맥스값
        int answer = 0;
        int[] E = new int[size];
        int[] S = new int[size];
        int[] M = new int[size];

        for(int i=0; i < size; i++){
            E[i] = i%15+1;
            S[i] = i%28+1;
            M[i] = i%19+1;
        }
        int i=0;
        for(String temp : reader.readLine().split(" ")){
            inputDate[i] = Integer.valueOf(temp);
            i++;
        }
        boolean find = false;
        i=0;
        while(!find){
            //이 조건을 만족하는 I를 찾는다
            if(inputDate[0] == E[i] && inputDate[1] == S[i] && inputDate[2] == M[i]){
                find = true;
                answer = i+1;
            }else{
                i++;
            }
        }
        System.out.println(answer);
    }
}