1476번: 날짜 계산
준규가 사는 나라는 우리가 사용하는 연도와 다른 방식을 이용한다. 준규가 사는 나라에서는 수 3개를 이용해서 연도를 나타낸다. 각각의 수는 지구, 태양, 그리고 달을 나타낸다. 지구를 나타
www.acmicpc.net
📚 문제 한 줄 요약
mod값인 E S M으로 원래 값(year) 알아내기
📚 문제 포인트 : mod 연산 결과로 원래 값을 어떻게 알아낼까?
📚 풀이
mod연산을 공부해본 결과, mod연산 결과값으로 원래 값을 딱 떨어지게 계산할 수 있는 공식은 없다고 결론 내리고 다음과 같이 풀이했다.
E, S, M는 다음과 같은 연산으로 나온 값이다.
현재 연도를 year이라고 하겠다.
E = (year-1) mod 15 + 1
S = (year-1) mod 28 + 1
M = (year-1) mod 19 + 1
여기서 현재 연도 year을 찾기 위해서, year에 E를 대입하여 15씩 늘려가면서 mod 28 계산 값이 S와 같은지, mod 19 값이 M과 같은지 비교한다.
(해보니까 S를 대입해서 28로 늘리든, M을 대입해서 19씩 늘리든 결과는 올바르게 나온다.)
위와 같은 조건으로 반복문을 작성해 문제를 해결한 코드는 다음과 같다.
#include <iostream>
using namespace std;
int main() {
// 1. INPUT DATA
int E, S, M;
cin >> E >> S >> M;
// 2. SEARCH YEAR
int year = E;
while(!((year-1)%28+1 == S && (year-1)%19+1 == M))
year += 15;
// 3. OUTPUT DATA
cout << year;
}
'Algorithm' 카테고리의 다른 글
[백준] 14500번 : 테트로미노 (Java) (0) | 2022.04.07 |
---|---|
[백준] 10845번 : 큐 (C++) (0) | 2021.12.03 |
[백준] 2309번 : 일곱 난쟁이 (C++) (0) | 2021.11.28 |
[백준] 1978번 : 소수 찾기 (C++) (0) | 2021.11.27 |
[백준] 4375번 : 1 (C++) (0) | 2021.11.25 |