# 리뷰: 윤년 여부 계산 #### CODE <a class='btn btn-default' href='/codes/45125'>Link</a> ``` public class LeapYear { public static void main(String[] args) { /* 1. 입력값 받기 */ int input = Integer.parseInt(args[0]); /* 2. 윤년 여부 계산 */ String output = test(input); /* 4. 결과 출력 */ System.out.printf("%d년은 윤년입니까? %s", input, output); } /* 3. 윤년 여부를 반환하는 메소드 */ public static String test(int year) { String answer = ""; if (year % 1000 == 0) { answer = "true"; } else if (year % 100 == 0) { answer = "false"; } else if (year % 4 == 0) { answer = "true"; } else { answer = "false"; } return answer; } } ``` #### INPUT ``` 1988 ``` #### OUPUT ``` 1988년은 윤년입니까? true ``` 안녕하세요. 중첩 조건문 관련하여 질문드립니다. 제가 작성한 코드가 정답 중 하나는 맞는거 같은데 정답 예로 올려주신 코드와 상당히 다르더라구요... 정답 예로 올려주신 코드를 보면서 제가 아직 중첩 조건문을 제대로 이해하지 못한 것 같아서 질문드립니다. ``` public static boolean test(int year) { boolean result = false; if (year % 4 == 0) { result = true; if (year % 100 == 0) { result = false; if (year % 1000 == 0) { result = true; } } } return result; } ``` 정답 예로 올려주신 코드를 보면서 저는 4의 배수인 입력값만 넣으면 result = true로 처리되어서 조건문이 종료되는 문제가 생길 줄 알았는데, 그러지 않고 if (year % 1000 == 0) { result = true;} 까지 작동하는 것 같더라구요. 그래서 제 나름대로 중첩 조건문을 "중첩 조건문의 조건들은 작성된 순서대로 처리되며, 선행하는 조건문이 참이 되더라도 마지막 조건문까지 작동한다"라고 이해 해봤는데 제가 이해한 것이 맞는지요? 제가 이해한 것이 맞다면, 만약 100의 배수 조건과 1000의 배수 조건의 순서가 바뀐다면 100의 배수일 경우 false라는 것이 마지막에 처리되기 때문에 1000의 배수이지만 100의 배수이기도 한 년도들은 false로 처리되어 오답이 되는 것이 맞을까요?
## 중첩 조건문의 실행은 그 내무 안쪽까지 차례로 실행 됩니다. 자세한 내용은 해당 강의를 참고해보세요 https://youtu.be/c6BvTLCBf6M ### PS. 서울에서 부산가는 길이 다양하듯, 프로그래밍 또한 다양한 방법의 해결법이 있습니다. 100의 배수 조건과 1000의 배수 조건의 순서가 바뀌더라도, 적절한 조건식을 통해 결과적으로 같은 코드를 작성할 수 있겠습니다.