Notice
Recent Posts
Recent Comments
Link
«   2024/11   »
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
Tags
more
Archives
Today
Total
관리 메뉴

동그란 도그린

BOJ 1476 - 날짜 계산 본문

알고리즘/문제 풀이

BOJ 1476 - 날짜 계산

도그rin 2023. 1. 15. 17:43

입력

  • 첫째 줄에 세 수 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