Notice
Recent Posts
Recent Comments
Link
MSM8994의 화룡점정 블로그
[JAVA] 윤년 구하는 코드 짧게 작성하기 본문
윤년 구하는 코드 찾아보면서 한 줄로 어떻게 안되나 싶은 마음이 드셨을겁니다.
year % 4 == 0 && year % 100 != 0 || year % 400 == 0
4년마다 오고 100년마다는 아니지만 400년마다는 윤년이 되는걸 짧게 표현할 수 있을까?.
그래서 인터넷을 돌다가 이런 코드가 눈에 밟혔습니다.
자바스크립트로 짜여진 21자 코드인데 원형은 이렇게 생겼습니다. 여기서 y는 년도입니다.
!(y%(y%25?4:16))(출처: https://codegolf.stackexchange.com/questions/50798/counting-leap-years)
자바스크립트는 C처럼 0을 false로, 나머지를 true로 사용할 수 있습니다.
따라서 이런 암시가 없는 자바를 위해 조금 바꾼다면 조건이 27→24자가 됩니다.
!(y%(y%25!=0?4:16)!=0)
y%(y%25!=0?4:16)==0
조건을 해석하면 다음과 같습니다.
1. y가 25로 나누어 떨어지면 y를 16으로 나누어 떨어지는지 따집니다.
4 x 25 = 100 이고 16 x 25 = 400이 되어 100년마다를 평년으로 400년마다를 윤년으로 판별합니다.
2. y가 25로 나누어 떨어지지 않으면 y를 4로 나누어 떨어지는지 따집니다.
100으로 나누어 떨어지지 않는 나머지 년도는 4년마다 한 번씩 오도록 계산합니다.
사실 100 400 이렇게 하는게 알아보기가 좋을테니 이런게 있다 정도로만 알아두시면 됩니다.
'코딩' 카테고리의 다른 글
[JSP] 단일 컬러 달력 출력 (오늘 날짜, 휴일도 표시) (0) | 2018.08.02 |
---|---|
[JSP] 단색 달력 JSP 출력 (0) | 2018.08.02 |
[JAVA] 정보처리 산업/기사 알고리즘 - 화폐매수 계산 (0) | 2018.07.31 |
[JSP] 1부터 N까지의 자연수, 홀수, 짝수 합 구하기 (0) | 2018.07.30 |
[JS] Math.random() 을 활용한 중복이 없는 임의의 수 6개짜리 배열에 담기 (3) | 2018.07.27 |
Comments