으하하 공부일기
[SWEA] - 7532. 세영이의 SEM력 연도 (D3) 본문
[문제]
세영이는 태양(S)과 지구(E)와 달(M)을 이용하여 연도를 기억한다.
이를 이용한 방법을 SEM력이라고 부르며, SEM력은 자연수 3개, S, E, M으로 이루어져있다.
첫 번째 수는 태양, 두 번째는 지구, 세 번째는 달과 관련 있다.
AD 1년에 SEM력을 1 1 1로 정의했다.
1년이 지날 때마다 각 수를 1씩 증가시키는데,
S는 365보다 커지면 1로, E는 24보다 커지면 1로, M은 29보다 커지면 1로 돌아온다.
예를 들어서 AD 24년은 24 24 24이고 AD 25년은 25 1 25이다.
SEM력으로 이루어진 연도가 주어졌을 때, 이를 만족하는 실제 연도 중 가능한 가장 빠른 연도를 구하여라.
[입력]
첫 번째 줄에 테스트 케이스의 수 T(1 ≤ T ≤ 2000)가 주어진다.
각 테스트 케이스의 첫 번째 줄에는 SEM력으로 이루어진 연도를 의미하는 자연수 3개,
S, E, M(1 ≤ S ≤ 365, 1 ≤ E ≤ 24, 1 ≤ M ≤ 29)가 공백으로 구분되어 주어진다.
[출력]
각 테스트 케이스마다 ‘#x’(x는 테스트케이스 번호를 의미하며 1부터 시작한다)를 출력하고,
주어진 SEM력 연도를 만족하는 실제 연도 중, 가능한 가장 빠른 연도를 출력하라.

문제 풀기
7532. 세영이의 SEM력 연도
[풀이]
- AD연도는 각각 S : AD%365, E : AD%24, M : AD%29이다.
- 따라서 AD연도에서 S, E, M을 뺀 값을 365, 24, 29로 나눴을 때 나머지가 0이어야 한다.
import java.util.Scanner;
class Solution {
public static void main(String[] args) throws Exception {
Scanner sc = new Scanner(System.in);
int t = sc.nextInt();
for(int tc=1; tc<=t; tc++) {
int s = sc.nextInt();
int e = sc.nextInt();
int m = sc.nextInt();
int year = s;
while(true) {
if((year - e) % 24 == 0 && (year - m) % 29 == 0) break;
year += 365;
}
System.out.format("#%d %d\n", tc, year);
}
}
}
'SWEA > D3' 카테고리의 다른 글
[SWEA] - 7675. 통역사 성경이 (D3) (0) | 2022.05.17 |
---|---|
[SWEA] - 7584. 자가 복제 문자열 (D3) (0) | 2022.05.17 |
[SWEA] - 7510. 상원이의 연속 합 (D3) (0) | 2022.05.16 |
[SWEA] - 7272. 안경이 없어! (D3) (0) | 2022.05.16 |
[SWEA] - 7227. 사랑의 카운슬러 (D3) (0) | 2022.05.16 |