Java/백준알고리즘

[Java] 백준알고리즘 #1476 날짜 계산

Sehyeok20 2021. 4. 15. 18:46
반응형

백준알고리즘 #1476 날짜 계산 문제

 

e, s, m 으로 입력받은 년도가 우리가 알고있는 년도로 몇 년인지 구하는 문제이다.

 

여러가지 방법이 있을 수 있겠지만 가장 단순하게 최대범위만큼 반복하며 년도를 증가시키는 방법을 사용할 것이다.

 

먼저 e,s,m을 입력받고 차례로 증가시키기 위한 임시 변수 etmp, stmp, mtmp도 만들어둔다.

우리가 사용하는 년도를 저장할 year 변수도 만들어둔다.

int e = sc.nextInt();
int s = sc.nextInt();
int m = sc.nextInt();
int etmp = 0;
int stmp = 0;
int mtmp = 0;

int year = 0;

 

그 후 최대범위(e, s, m의 각 범위의 곱)만큼 반복하며 차례로 etmp, stmp, mtmp 그리고 year을 증가시켜준다.

여기서 etmp가 15가 넘어가면(16이되면) 1로 바꿔주고 stmp와 mtmp도 같은 방법으로 범위를 넘을 때마다 1로 바꿔준다.

 

for (int i = 0; i < 7980; i++) {
	etmp++;
	stmp++;
	mtmp++;

	year++;

	if (etmp == 16) 
    	etmp = 1;
    if (stmp == 29) 
    	stmp = 1;
    if (mtmp == 20) 
    	mtmp = 1;
    if (etmp == e && stmp == s && mtmp == m) 
    	break;

}

 

충분히 반복한 후 이 etmp, stmp, mtmp가 입력받은 e, s, m 과 같아질 때 year값을 출력하면 된다.

 

전체 코드를 보면 다음과 같다.

import java.util.Scanner;

public class Back1476 {

	public static void main(String[] args) {

		Scanner sc = new Scanner(System.in);

		int e = sc.nextInt();
		int s = sc.nextInt();
		int m = sc.nextInt();
		int etmp = 0;
		int stmp = 0;
		int mtmp = 0;

		int year = 0;

		for (int i = 0; i < 7980; i++) {
			etmp++;
			stmp++;
			mtmp++;

			year++;
			
			if (etmp == 16) 
				etmp = 1;
			if (stmp == 29) 
				stmp = 1;
			if (mtmp == 20) 
				mtmp = 1;
			if (etmp == e && stmp == s && mtmp == m) 
				break;
			
		}
		System.out.println(year);

		sc.close();
	}

}
반응형