알고리즘/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();
}
}