반응형
2753번: 윤년
연도가 주어졌을 때, 윤년이면 1, 아니면 0을 출력하는 프로그램을 작성하시오. 윤년은 연도가 4의 배수이면서, 100의 배수가 아닐 때 또는 400의 배수일 때이다. 예를 들어, 2012년은 4의 배수이면서
www.acmicpc.net
윤년 알고리즘에 대해 알아보았다.
문제를 보면 연도가 윤년이면 1, 윤년이 아니면 0을 출려해달라는 문제이다.
여기서 윤년의 조건을 살펴보면 ,
4의 배수이면서 100의 배수가 아니거나 400의 배수인 년도를 윤년이라고 한다.
우선 조건문에 대해서 생각해보았다.
//1번 조건 - 4의 배수일 경우
(year % 4 == 0)
//2번 조건 - 100의 배수가 아닐 경우
(year % 100 != 0)
//3번 조건 - 400의 배수일 경우
(year % 400 == 0)
이렇게 3개의 조건을 정리해두고 코드를 작성해보려고 했다.
기본적으로 작성해보면
1. 조건식을 차례대로 실행
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int y = scan.nextInt();
if(y%4==0){
if(y%400==0){
System.out.println("1");
} else if (y%100==0) {
System.out.println("0");
}else {
System.out.println("1");
}
}
}
}
로 작성하여 해결해보았다.
생각을 좀 더 해보니 이 방법 뿐 아니라 다른 여러가지 방법으로 해결할 수 있었다.
2. AND , OR 조건문을 사용하여 해결
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int y = scan.nextInt();
if(y%4==0 && (y%100 != 0 || y%400 == 0)){
System.out.println(1);
}else{
System.out.println(0);
}
}
3. 삼항연산자 사용
(이 부분은 조금 더 생각해서 구현 후 업로드 예정이다..)
이러게 조건문을 가지고 다양한 연산을 할 수 있었다.
그리고 꼭 Scanner가 아니라 BufferedReader를 이용하여 문자를 입력받을 수 있다. 하지만 내가 사용해보지 않은 부분이라 조금 더 공부가 필요한 것 같다.
윤년 알고리즘을 통해 부족한 부분을 깨달은 부분을 작성해보았다.
- IntelliJ에서 main을 생성하지않고 오류를 찾지 못한 점 : 이클립스에서 인텔리제이에 아직 덜 익숙해진 것 같다..ㅋㅋ 조금 더 많이 친해질 필요가 보인다.
- BufferedReader에 대해 조금 알아보기
- 삼항연산자에 대한 공부
반응형
'알고리즘 > 알고리즘:백준' 카테고리의 다른 글
[ 알고리즘 : 백준 ] 2562번 : 최댓값 (0) | 2022.12.28 |
---|---|
[ 알고리즘 : 백준 ] 18018 : 최소, 최대 (0) | 2022.12.28 |
[ 알고리즘 : 백준 ] 10871번 X보다 작은 수 (0) | 2022.12.26 |
[ 알고리즘 : 백준 ] 10807번 개수 세기 (0) | 2022.12.26 |
[ 알고리즘 : 백준 ] 14681:사분면 고르기 (0) | 2022.08.22 |