백준 날짜계산 1476

1. 백준 날짜계산 1476

2. 컴퓨팅적 스킬

  • 단순 반복문과 조건문을 이용한 사칙연산 문제
  • while문을 이용해 지구,태양,달이 해당 입력값과 맞을 경우 break;

3. 컴퓨팅적 사고

  • 년도가 증가할때마다 E,S,M이 1씩 증가한다.
  • 지구 1<=E<=15, 태양1<=S<=28, 달 1<=m<=19의 범위를 벗어나게 된다면 해당 값을 1로 초기화 시켜야합니다.
  • E == 16, S == 29, M == 19일때 1로 초기화
  • 입력 x,y,z 지구,태양,달을 입력 받았을때 x == E, y == S, z == M 지구,태양,달이 같은 연도를 찾은것이므로 종료시킵니다. 이때, sum은 몇년이 지났는지를 카운팅한 변수입니다. 따라서 sum을 출력시켜 정답을 도출시킵니다.
    계산 범위를 잘 생각해서 풀어야합니다.

4. 풀이

4.1. 모든경우의 수를 찾습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
//
// 02_백준_날짜계산_1476.cpp
// algorithm-level-up
//
// Created by kgh on 28/11/2019.
// Copyright © 2019 kgh. All rights reserved.
//

#include <stdio.h>
#include <iostream>
using namespace std;
int main(void){

int x,y,z = 0; // 입력
int e=1;
int s=1;
int m=1; // 지구, 태양, 달
cin >> x >> y >> z;

int sum = 1; // 연도
while(true){
if(e == x && s == y && m == z){
cout << sum << '\n';
break;
}
e +=1;
s +=1;
m +=1;
sum +=1;

// 지구범위
if(e == 16){
e = 1;
}
// 태양범위
if(s == 29){
s = 1;
}
// 달 범위
if(m == 20){
m = 1;
}
}
return 0;
}