룰루랄라 코딩기록장

[Baekjoon]백준 1476번 날짜계산 본문

Algorithm/브루트포스

[Baekjoon]백준 1476번 날짜계산

Jeonnnng 2019. 4. 22. 16:42

1476번 날짜계산 문제 풀이

문제

  • 준규가 사는 나라에서는 수 3개를 이용해서 연도를 나타낸다. 각각의 수는 지구, 태양, 그리고 달을 나타낸다. 지구를 나타내는 수를 E, 태양을 나타내는 수를 S, 달을 나타내는 수를 M이라고 했을 때, 이 세 수는 서로 다른 범위를 가진다. (1 ≤ E ≤ 15, 1 ≤ S ≤ 28, 1 ≤ M ≤ 19) E, S, M이 주어졌고, 1년이 준규가 사는 나라에서 1 1 1일때, 준규가 사는 나라에서 E S M이 우리가 알고 있는 연도로 몇 년인지 구하는 프로그램을 작성하시오.

입력

  • 첫째 줄에 세 수 E, S, M이 주어진다. 문제에 나와있는 범위를 지키는 입력만 주어진다.

출력

  • 첫째 줄에 E S M으로 표시되는 가장 빠른 연도를 출력한다. 1 1 1은 항상 1이기 때문에, 정답이 음수가 나오는 경우는 없다.

예시

입력 
1 16 16 
1 1 1 
1 2 3 
15 28 19
출력 
16
1
5266
7980

풀이

  1. 입력 받을 변수 e,s,m을 선언한다.
  2. e,s,m과 같은 값인지 비교할 E,S,N을 선언한다.
  3. 무한루프인 for문을 선언한 후 e,s,m과 E,S,M이 모두 같아질 때 까지 i를 증가시킨다.
    • 모두 같다면 i를 출력하고 무한루프를 종료한다.
  4. E,S,M을 1씩 증가시키며 범위를 초과하면 다시 1로 초기화 시킨다.

코드

#include<iostream>
using namespace std;

int main() {
    int e, s, m;
    int E=0, S=0, M = 0;
    cin >> e >> s >> m;

    for (int i = 0;; i++) {
        if (e == E && s == S && m == M) {
            cout << i << endl;
            break;
        }
        E += 1;
        S += 1;
        M += 1;
        if (E == 16)
            E = 1;
        if (S == 29)
            S = 1;
        if (M == 20)
            M = 1;

    }
    return 0;
}
Comments