본문 바로가기
문제 풀이/백준

[JAVA69] 1476. 날짜 계산

by hyeminigo 2024. 11. 4.

1476. 날짜 계산 (S5)

시간 제한 메모리 제한 제출 정답 맞힌 사람 정답 비율
2 초 4 MB 43801 28088 22868 66.636 %

문제

준규가 사는 나라는 우리가 사용하는 연도와 다른 방식을 이용한다. 준규가 사는 나라에서는 수 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이기 때문에, 정답이 음수가 나오는 경우는 없다.


summary

E S M이 우리가 알고 있는 연도로 몇 년인지 구하기

  • 가장 빠른 연도를 출력

strategy

완전탐색 (브루트포스)

  • 가장 빠른 년도를 구하기 때문에 1부터 시작
  • E(15), S(28), M(19) 로 나눈 나머지 활용. (대신, 15, 28, 19 는 나머지 0과 같은 경우로 따로 작성필요)
  • 각 정수가 세개의 조건을 모두 만족하면 정답

note

  • 1 ≤ E ≤ 15, 1 ≤ S ≤ 28, 1 ≤ M ≤ 19
import java.util.*;
import java.io.*;

public class Main {
    static int E,S,M;
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer input = new StringTokenizer(br.readLine());

        E = Integer.parseInt(input.nextToken());
        S = Integer.parseInt(input.nextToken());
        M = Integer.parseInt(input.nextToken());

        E = (E == 15) ? 0 : E;
        S = (S == 28) ? 0 : S;
        M = (M == 19) ? 0 : M;
        
        int i = 1;
        while(true) {
            if((i % 15 == E) && (i % 28 == S) && (i % 19 == M)) break;
            i++;
        }

        System.out.println(i);
    }
}
문제 결과 메모리 시간 언어코드 길이
1476 맞았습니다!! 14156 KB 100 ms  Java 11 / 수정 724 B

memo

  • 모든 문제를 풀때는 브루투포스를 가장 먼저 떠올리는 자세를 가져야겠다. (자꾸 알고리즘 기법을 떠올리니 쉬운 길이 낯설다)
  • 정수론 문제도 풀면서 수학적 사고도 길러야겠다. (현대오토에버 코테 후기)

'문제 풀이 > 백준' 카테고리의 다른 글

[JAVA71] 1269. 대칭 차집합  (2) 2024.11.04
[JAVA70] 1439. 뒤집기  (0) 2024.11.04
[JAVA68] 2343. 기타 레슨  (0) 2024.11.01
[JAVA67] 1699. 제곱수의 합  (1) 2024.10.31
[JAVA66] 16234. 인구이동  (0) 2024.10.29