동그란 도그린
BOJ 1476 - 날짜 계산 본문
입력
- 첫째 줄에 세 수 E, S, M 입력 (1 ≤ E ≤ 15, 1 ≤ S ≤ 28, 1 ≤ M ≤ 19)
출력
- 첫째 줄에 E S M으로 표시되는 가장 빠른 연도 출력
풀이 방법
- 연도(year)를 E+15i 혹은 S+28j 혹은 M+19k로 표현 가능 (i, j, k는 0 이상의 정수)
- 위를 통해 아래의 두 식을 도출 가능
- j=(year-S) / 28
- k=(year-M) / 19
- 이때 j와 k는 0 이상의 정수이므로 아래의 조건을 만족해야 함
- (year-S)≥0 && (year-S)%28==0
- (year-M)≥0 && (year-M)%19==0
코드
import java.io.*;
import java.util.*;
public class BOJ_1476 {
public static void main(String[] args) throws IOException {
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st=new StringTokenizer(br.readLine());
int E=Integer.parseInt(st.nextToken()); // 지구
int S=Integer.parseInt(st.nextToken()); // 태양
int M=Integer.parseInt(st.nextToken()); // 달
int i=0, year;
while(true) {
year=E+15*i; //연도
if(year-S>=0 && (year-S)%28==0) { // 만약 (해당 연도-S)가 0보다 크거나 같고 28로 나누어떨어지고
if(year-M>=0 && (year-M)%19==0) { // 만약 (해당 연도-M)가 0보다 크거나 같고 19로 나누어떨어지면
break; // 반복문 종료
}
}
i++;
}
System.out.printf("%d", year); // 연도 출력
}
}
'알고리즘 > 문제 풀이' 카테고리의 다른 글
BOJ 15649 - N과 M (1) (0) | 2023.01.19 |
---|---|
BOJ 2309 - 일곱 난쟁이 (0) | 2023.01.18 |
BOJ 1978 - 소수 찾기 (0) | 2023.01.14 |
BOJ 1037 - 약수 (0) | 2023.01.14 |
BOJ 2609 - 최대공약수와 최소공배수 (0) | 2023.01.12 |
Comments