윤년

김나영·2023년 6월 14일
0

알고리즘

목록 보기
10/16

문제 : 윤년

풀이

Scanner sc = new Scanner(System.in);
  • 연도 값을 Scanner로 받음
int year = sc.nextInt();
  • 주어지는 값이 연도이므로 알아보기 쉽게 year로 변수 지정

  • 연도는 정수이므로 sc.nextInt()로 값을 받음

전체 코드

import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int year = sc.nextInt();
        if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
            System.out.println("1");
        } else {
            System.out.println("0");
        }
    }
}   

문제 발생

import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int year = sc.nextInt();
        if (year % 4 == 0 || year % 100 != 0 ) {
            System.out.println("1");
        } else {
            System.out.println("0");
        }
    }
}
  • 처음 제출한 코드

  • 왜 틀렸는지 확인해보다가 윤년의 전제 조건 중 하나인 ' 400의 배수일 때 ' 조건식이 빠져있는 것을 확인

import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int year = sc.nextInt();
        if (year % 4 == 0 || year % 100 != 0 ) {
            System.out.println("1");
        } else if (year % 400 == 0){
            System.out.println("1");
        } else {
            System.out.println("0");
        }
    }
}
  • 수정 후 재제출

  • 또 문제 발생!!!

  • 문제를 다시 차근차근 읽어보다가 4의 배수이면서 100의 배수가 아닐 때 또는 400의 배수일 때라는 문구를 보고 코드를 다시 확인

  • 이면서는 AND 연산자인데 OR 연산자로 구현

해결

if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0)

0개의 댓글