import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int year = Integer.parseInt(br.readLine());
int a = year % 4;
int b = year % 100;
int c = year % 400;
if (a == 0) {
// 100의 배수가 아니라서 윤년, 400의 배수라서 윤년.
// b != 0 이면 윤년.
// b == 0 이면 윤년 아님
// c == 0 윤년
if (b != 0 || c == 0) {
System.out.println("1");
} else {
System.out.println("0");
}
} else {
System.out.println("0");
}
}
}
# 입/출력 결과
# 과정
입력은 BufferedReader + InputStreamReader로 받고, 입력 값은 ing타입의 year에 저장했다.
그리고 각 int타입의 a, b, c 변수에 year을 기준으로 %4, %100, %400 의 결과를 저장했다.
if문을 사용하는데, 한번에 조건문에 작성한게 아니라 중첩 조건문으로 구현했다.
a가 0이면 윤년이기 때문에 1의 값을 출력, 아니면 0의 값을 출력.
a가 0 이면 윤년이지만, 만약에 b가 0이 아니거나 c가 0이면 윤년이기 때문에 1의 값을 출력, 아니면 0의 값 출력.
# 느낀 점
크게 어려운 점은 없었는데, 문제에서 4의 배수이면서, 100의 배수가 아닐 때 또는 400의 배수일 때 윤년이라는 말에 순간 적으로 이해가 안되어서 멍했다.
4의 배수면 'year % 4 == 0' 이고, 100의 배수가 아니라면 'year % 10 != 0' 이 것을 의미하는 것일거고, 400의 배수일 때에는 'year % 400 == 0'을 말하는 거 같은데, 이고, 아니면서 이고. 이렇게 되니까 문제를 이해하는데 순간 멈칫했었다.
그래서 처음에 4의 배수를 기준으로 4의 배수이면 1, 아니라면 0 이렇게 조건문을 작성한 다음에, 4의 배수라면 이 안에서 중첩 조건문을 작성했다.