반응형
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();
}
}
반응형
'Java > 백준알고리즘' 카테고리의 다른 글
[Java] 백준알고리즘 #13458 시험 감독 (0) | 2021.04.15 |
---|---|
[Java] 백준알고리즘 #3046 R2 (0) | 2021.04.15 |
[Java] 백준알고리즘 #2455 지능형 기차 (0) | 2021.04.13 |
[Java] 백준알고리즘 #2475 검증수 (0) | 2021.04.07 |
[Java] 백준알고리즘 #2163 초콜릿 자르기 (0) | 2021.03.26 |