[★2][백준2753번]윤년 (JAVA)
카테고리: BKJN
태그: Algorithm Java Coding Test
[★2][백준2753번]윤년 (JAVA)
2753번 문제 ☞ https://www.acmicpc.net/problem/2753
난이도 ☞ [★2]
윤년
- 문제
- 연도가 주어졌을 때, 윤년이면 1, 아니면 0을 출력하는 프로그램을 작성하시오.
윤년은 연도가 4의 배수이면서, 100의 배수가 아닐 때 또는 400의 배수일 때이다.
예를 들어, 2012년은 4의 배수이면서 100의 배수가 아니라서 윤년이다. 1900년은 100의 배수이고 400의 배수는 아니기 때문에 윤년이 아니다. 하지만, 2000년은 400의 배수이기 때문에 윤년이다. - 첫째 줄에 연도가 주어진다. 연도는 1보다 크거나 같고, 4000보다 작거나 같은 자연수이다.
-
첫째 줄에 윤년이면 1, 아니면 0을 출력한다.
예제입력 예제출력 2000 1 1999 0
- 연도가 주어졌을 때, 윤년이면 1, 아니면 0을 출력하는 프로그램을 작성하시오.
내가 푼 풀이
이번 문제도 이전 문제와 같이 입력을 받아 조건을 부여하여 조건에 따라 출력되게 하는 방법인데, 이는 if-else
혹은 if-else if-else
를 사용하여 구현하는 것이다. 입력받는 방식은 여러가지가 있지만 제일 쉬운 방식으로 구현하였다. 아직까지는 어렵지는 않는 것 같다.
[ 풀이 1 ]
메모리 :
17732KB
시간 :208ms
Scanner
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
int a = s.nextInt();
s.close();
if ((a % 4 == 0 && a % 100 != 0) || a % 400 == 0) {
System.out.println("1");
} else {
System.out.println("0");
}
}
}
위의 방식처럼 할 수도 있지만, BufferedReader
를 사용하여 구현을 할 수도 있으며, BufferedReader
방식의 코드 구현이다. 아래의 코드를 참고하면 된다.
[ 풀이 2 ]
메모리 :
14240KB
시간 :128ms
BufferedReader
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 a = Integer.parseInt(br.readLine());
if ((a % 4 == 0 && a % 100 != 0) || a % 400 == 0) {
System.out.println("1");
} else {
System.out.println("0");
}
}
}
[참고]
각 문제의 if문에 대한 설명이다. 위의 if문들을 보면 아래 코드와 같이 구현이 되어 있습니다.
if ((a % 4 == 0 && a % 100 != 0) || a % 400 == 0) {
System.out.println("1");
} else {
System.out.println("0");
}
하지만 위의 if문처럼 말고 변형을 주어 if문을 구현하여 출력 할 수 있다. 그 코드는 다음 아래와 같다.
if (a % 4 == 0) {
if (a % 400 == 0) {
System.out.println("1");
} else if (a % 100 == 0) {
System.out.println("0");
} else {
System.out.println("1");
}
} else {
System.out.println("0");
}
이와 같이 줄 수도 있다. 여기서 주의깊게 봐야할 구문은 ==
이냐 아니면 !=
이냐를 잘 봐야할 것 같다. 위의 문제들처럼 if문을 풀어서 작성하여도 좋고, 아니면 삼항 연산자를 사용하여 구현하여도 된다. Scanner
로 예시를 들면 아래와 같다.
[ 풀이 3 ]
메모리 :
17724KB
시간 :212ms
Scanner
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
int a = s.nextInt();
s.close();
if ((a % 4 == 0 && a % 100 != 0) || a % 400 == 0) {
System.out.println("1");
} else {
System.out.println("0");
}
}
}
댓글 남기기