
내가 생각했을때 문제에서 원하는부분
정수 배열 date1과 date2가 주어집니다.
두 배열은 각각 날짜를 나타내며 [year, month, day] 꼴로 주어집니다. 각 배열에서 year는 연도를, month는 월을, day는 날짜를 나타냅니다.
만약 date1이 date2보다 앞서는 날짜라면 1을, 아니면 0을 return 하는 solution 함수를 완성해 주세요.
내가 이 문제를 보고 생각해본 부분
solution 메서드는 두 정수 배열 date1과 date2를 입력으로 받는다. 각각 연도, 월, 일을 나타내는 3개의 요소를 가진 배열이다.
date1[0]과 date2[0]을 비교하여 연도가 작은 경우에는 date1이 더 앞서는 날짜이므로 1을 반환한다.
만약 연도가 같다면, date1[1]과 date2[1]을 비교하여 월이 작은 경우 1을 반환한다.
연도와 월이 모두 같을 경우, date1[2]와 date2[2]을 비교하여 일이 작은 경우 1을 반환한다.
이 모든 조건에 해당하지 않으면 date1이 date2보다 앞서지 않는 것이므로 0을 반환한다.
main 메서드 안에서 두 쌍의 날짜 배열이 선언되어 있다.
각각 solution 메서드에 전달되어 비교 결과를 반환받는다.
System.out.println으로 결과를 출력하여, 첫 번째 날짜가 앞서면 1, 같거나 뒤면 0이 출력된다.
코드로 구현
class Solution {
public int solution(int[] date1, int[] date2) {
if (date1[0] < date2[0]) {
return 1;
} else if (date1[0] == date2[0]) {
if (date1[1] < date2[1]) {
return 1;
} else if (date1[1] == date2[1]) {
if (date1[2] < date2[2]) {
return 1;
}
}
}
return 0;
}
}
프로그래머스 코드
package programmers.programmers2;
// 프로그래머스 날짜 비교하기
public class Main107 {
public static int solution(int[] date1, int[] date2) {
if (date1[0] < date2[0]) {
return 1;
} else if (date1[0] == date2[0]) {
if (date1[1] < date2[1]) {
return 1;
} else if (date1[1] == date2[1]) {
if (date1[2] < date2[2]) {
return 1;
}
}
}
return 0;
}
public static void main(String[] args) {
int[] date1 = {2021, 12, 28};
int[] date2 = {2021, 12, 29};
int[] date3 = {1024, 10, 24};
int[] date4 = {1024, 10, 24};
int result = solution(date1, date2);
int result2 = solution(date3, date4);
System.out.println(result); // 기대 출력: 결과: 1
System.out.println(result2); // 기대 출력: 결과: 0
}
}
위에 있는 코드를 변경한 코드
코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.