문제 설명
정수 배열 date1과 date2가 주어집니다. 두 배열은 각각 날짜를 나타내며 [year, month, day] 꼴로 주어집니다. 각 배열에서 year는 연도를, month는 월을, day는 날짜를 나타냅니다.
만약 date1이 date2보다 앞서는 날짜라면 1을, 아니면 0을 return 하는 solution 함수를 완성해 주세요.
제한사항
date1의 길이 = date2의 길이 = 3 0 ≤ year ≤ 10,000 1 ≤ month ≤ 12 day는 month에 따라 가능한 날짜로 주어집니다.
나의 코드
class Solution {
public int solution(int[] date1, int[] date2) {
int answer = 0;
if(date1[0]<date2[0]) {
answer = 1;
} else if(date1[0]==date2[0]) {
if(date1[1]<date2[1]) {
answer = 1;
} else if(date1[1]==date2[1]) {
if(date1[2]<date2[2]) {
answer = 1;
}
}
}
return answer;
}
}
다른 사람 코드
import java.time.LocalDate;
class Solution {
public int solution(int[] date1, int[] date2) {
LocalDate dateA = LocalDate.of(date1[0], date1[1], date1[2]);
LocalDate dateB = LocalDate.of(date2[0], date2[1], date2[2]);
if (dateA.isBefore(dateB)) {
return 1;
} else {
return 0;
}
}
}
LocalDate
클래스 사용
import java.util.*;
class Solution {
public int solution(int[] date1, int[] date2) {
return Arrays.compare(date1, date2) < 0 ? 1 : 0;
}
}
Arrays.compare()
함수 사용
class Solution {
public int solution(int[] date1, int[] date2) {
int date1Days = getTotalDays(date1);
int date2Days = getTotalDays(date2);
return date1Days < date2Days ? 1 : 0;
}
public int getTotalDays(int[] date) {
int result = 0;
result += date[0] * 360;
result += date[1] * 30;
result += date[2];
return result;
}
}
년도, 월, 일마다 맞는 값들을 미리 곱해줘서 적용시킨 후, 비교연산자를 통해 결과 도출
느낀 점
여러 조건문들을 통해 결과를 도출해냈는데, 다른 사람 코드를 보면 다양한 방법들이 존재했다.