CODING TEST/baekjoon
#2753 - 윤년
iamyuunzo
2025. 7. 8. 21:40
📌 문제 정보
- 문제 이름 : #2753번 - 윤년
- 문제 링크: https://www.acmicpc.net/problem/2753
📌 문제 요약
- 핵심 조건: 윤년은 연도가 4의 배수이면서, 100의 배수가 아닐 때 또는 400의 배수일 때이다. 윤년이면 1, 아니면 0을 출력
- 시간복잡도 제한: 없음
📌 내 풀이 및 코드
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int year;
year = sc.nextInt();
if (year % 400 ==0) {
System.out.println("1");
} else {
System.out.println("0");
}
}
}
<-- 내가 처음에 어떻게 풀었는지 -->
- 연도가 4의 배수이면서, 100의 배수가 아닐 때 또는 400의 배수일 때이다. 라는 말의 '또는'에 꽂혀서 문제를 제대로 안 읽었음.
- 예제 입력과 출력 답은 맞게 나왔으나 다른 조건들에 충족하지 못해서 오답.
📌 최종 정답 및 풀이
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int year;
year = sc.nextInt();
if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {
System.out.println("1");
} else {
System.out.println("0");
}
}
}
<-- 풀이 요약 -->
** 윤년 문제 조건 **
- (1) 연도가 4의 배수이고 / (2) AND 100의 배수가 아니거나 / (3) 400의 배수이면 윤년
- (1) year % 4 == 0 / (2) year % 100 !=0 / (3) year % 400 ==0
<-- 다른 풀이 요약 -->
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int year = sc.nextInt();
System.out.println(
((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) ? "1" : "0"
);
}
}
- 삼항 연산자 버전 : 한 줄 출력이라 짧고 깔끔함.
- 조건 실수 안하면 오류 날 확률 낮음. but 괄호 실수 조심.
📌 새로 배운 문법
<-- 이번 문제에서 새로 배운 Java 문법 정리 -->
- .