본문 바로가기
Problem Solving

[C++] [백준 1476] 날짜 계산 (pps 4-9)

by tls1107 2021. 7. 18.
728x90
반응형


문제 풀기 전 생각 : 

/*
e s m 을 모두 입력받고
변수 세개를 선언하고 1으로 초기화한다.
count 변수를 만들고 1로 초기화 한다.
반복문으로 이 변수들을 1씩 증가시키며 
입력받은 e s m 과 같다면 count을 출력한다.
그리고 조건문으로 e는 15보다 크다면
s 는 28보다 크다면 그리고 m은 19보다 크다면 1로 초기화한다.
*/

 


#include <iostream>
using namespace std;

int main() { 
  int answer[3];
  cin >> answer[0] >> answer[1] >> answer[2];
  int e=1,s=1,m=1;
  int count = 1;
  while(count++){
    if((e == answer[0]) && (s == answer[1]) && (m == answer[2]) ) {
      cout << count-1 << endl;  
      break;
    }
    if(++e > 15) e = 1;
    if(++s > 28) s = 1;
    if(++m > 19) m = 1;
  }
  return 0; 
}

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

 

1476번: 날짜 계산

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

www.acmicpc.net


풀 때 어려웠던 점 또는 느낀점 :

 

단순한 방법은 쉽게 떠올릴수 있었다.

좀 더 효율적인 방법이 있는지 궁금하다.

그리고 이런 이상한 방법으로 날짜를 계산한다니...

현실에선 그렇지 않음에 감사해야겠다.


개선방안 :

#include <stdio.h>
int main(){
	int n,E,S,M;
	scanf("%d %d %d",&E,&S,&M);
	for(n=1;;n++){
		if((n%15==E%15)&&(n%28==S%28)&&(n%19==M%19)) break;
	}
	printf("%d",n);
}

참 간단한 방법이다...

저걸 생각 못했네...

충분히 떠올릴수 있는 방법인데...담부턴 저렇게 풀어야겠다.

728x90
반응형

댓글