반응형
<함수를 활용한 문제 - 그 계절, 그 날>
풀이 방식
import java.util.Scanner;
public class Main {
public static boolean isLeapYear(int year){
if(year % 4 == 0){
if(year % 100 == 0){
if(year % 400 == 0){
return true;
}else{
return false;
}
}else{
return true;
}
}else{
return false;
}
}
public static String searchSeason(int month) {
if(month == 12 || month == 1 || month == 2) {
return "Winter";
} else if(month == 3 || month == 4 || month == 5) {
return "Spring";
} else if(month == 6 || month == 7 || month == 8) {
return "Summer";
} else if(month == 9 || month == 10 || month == 11) {
return "Fall";
} else {
return "-1";
}
}
public static boolean isExist(int year, int month, int day){
int[] days = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int[] leap_days = {31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
if(month < 1 || month > 12){
return false;
}
if(isLeapYear(year)){
if(day < 1 || day > leap_days[month-1]){
return false;
}
}else{
if(day < 1 || day > days[month-1]){
return false;
}
}
return true;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int Y = sc.nextInt();
int M = sc.nextInt();
int D = sc.nextInt();
if(isExist(Y,M,D)){
System.out.println(searchSeason(M));
}else{
System.out.print(-1);
}
}
}
1. isLeapYear(int year)
인자값을 year값으로 받아 해당 년도가 윤년인지 판단하는 로직을 진행한다.
2. SearchSeason(int month)
인자값을 month를 받아서, 해당 월이 어느 계절에 속하는지 string값으로 반환하는 로직을 작성한다.
3. isExist(int year, int month, int day)
- 인자 값을 year, month, day를 모두 받는다
- year로 먼저 윤년인지를 파악한다.
- month가 범위를 벗어나지 않았다면 사전에 정의해둔 days와 leap_days의 배열안의 날짜를 조회한다.
- day가 날짜를 벗어나지 않는지 확인하고 true를 반환한다.
위와 같은 함수들을 이용하여 쉽게 문제 풀이에 접근할 수 있다.
반응형
'코딩테스트' 카테고리의 다른 글
[코드트리] 함수를 이용한 부분 문자열 위치 구하기 - 코드트리 조별과제 (0) | 2024.08.14 |
---|