백준

[백준] 날짜 계산 (JAVA)

코 밑 2025. 2. 5. 21:13
Contents

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

 

 

연도를 이상하게 세는 문제다

1년이 지날 때마다 지구숫자 e, 태양 숫자 s, 달 숫자 m이 하나씩 오른다.

(0<e<16,0< s<29, 0<m< 20)

만약 우리 연도로 15년이라면 15 15 15고

16년이라면 1 16 16이 된다.

 

저쪽 나라 연도로 입력했을 때 우리 연도로는 몇년인지 출력해라.

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

// 백준 날짜 계산
// 우리와 다른 방식으로 연도를 계산하는 나라가 있다.
// 각각 지구(e), 태양(s), 달(m)을 상징하는 수 3개를 이용해 나타낸다.
// (1 <= e <= 15, 1 <= s <= 28, 1 <= m <= 19)
// 1년이 지날 때마다 각 숫자가 1씩 증가한다.
// 15년까진 15 15 15지만 16년부턴 1 16 16
// 세 숫자를 입력했을 때 우리가 알고있는 연도 출력
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());
        // 15년까지
        int e = Integer.parseInt(st.nextToken());
        // 28년까지
        int s = Integer.parseInt(st.nextToken());
        // 19년까지
        int m = Integer.parseInt(st.nextToken());

        int year = 0;

        int tmpe = 0;
        int tmps = 0;
        int tmpm = 0;
        // 찾을 때까지 무한루프
        while (true) {
            tmpe++;
            tmps++;
            tmpm++;
            year++;

            if (tmpe == 16) {
                tmpe = 1;
            }
            if (tmps == 29) {
                tmps = 1;
            }
            if (tmpm == 20) {
                tmpm = 1;
            }

            if (tmpe == e && tmps == s && tmpm == m) {
                System.out.println(year);
                break;
            }
        }
    }
}

 

수학을 이용하는 문제다.

근데 어떻게 푸는지 감이 안잡혀서 일단 무한루프를 넣고 세 숫자 모두 만족할 때까지 돌려보았다.

근데 맞았다;;

 

다른 사람들이 푸는 걸 찾아봤는데 대부분 이렇게 풀고

다른 경우는 나머지를 이용해서 풀었더라.

if (year % 15 == 0 && year % 28 == 0 && year % 19 == 0) {
	System.out.println(year);
	break;
}

 

이게 더 깔끔하고 수학스러운 거 같다.

 

'백준' 카테고리의 다른 글

[백준] 배열 합치기 (JAVA)  (2) 2025.02.05
[백준] 비밀번호 찾기 (JAVA)  (2) 2025.02.05
[백준] 문자열 집합 (JAVA)  (0) 2025.02.03
[백준] 이친수 (JAVA)  (3) 2025.02.03
[백준] 방 번호 (JAVA)  (1) 2025.02.01