알고리즘/bruteforce

[백준알고리즘] 브루트포스 - 1476번 날짜 계산 문제

Fenderblue 2023. 4. 9. 00:27

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

 

1476번: 날짜 계산

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

www.acmicpc.net

이전에 푼 사탕게임 문제가 개인적으로 기빨렸었는데(행,열 관련 반복문으로 푸는 문제가 갠적으로 코드 짜다보면 자꾸 헷갈린다)

이 문제는 힐링이었다..

정말 단순하게 풀었다!!

그런데 풀때 궁금한게 있었다

반복문이 언제 끝날지 모르는데 이걸 시간 내에 브루트포스 알고리즘으로 풀수 있다는 보장을 어떻게 하지??

강의를 찾아 들었다

아하

각 E S M의 범위가 15 28 19까지씩만 나타낼 수 있으니까

나타낼 수 있는 수는 15 x 28 x 19 = 7980개..!!

보통 100000000번이 1초정도 걸린다고 한다 거기에 비하면 작디 작은 숫자이므로 충분한것..

 

풀이코드

package baekjoonWeek3;

import java.io.*;
import java.util.StringTokenizer;

public class DateCalculate {    //백준 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));
        StringTokenizer st = new StringTokenizer(br.readLine());
        int E = Integer.parseInt(st.nextToken());   //1~15
        int S = Integer.parseInt(st.nextToken());   //1~28
        int M = Integer.parseInt(st.nextToken());   //1~19

        int e = 0; int s = 0; int m = 0;
        int year = 0;
        while (e != E || s != S || m != M) {
            year++;
            if (e == 15) e = 1;
            else e++;
            if (s == 28) s = 1;
            else s++;
            if (m == 19) m = 1;
            else m++;
        }

        bw.write(Integer.toString(year));
        bw.flush();
        bw.close();
    }
}