[Codetree] 요일 맞추기
26 Sep 2026
Reading time ~2 minutes
해당 문제는 코드트리 요일 맞추기에서 풀어보실 수 있습니다.
풀이1 구현
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int m1 = sc.nextInt();
int d1 = sc.nextInt();
int m2 = sc.nextInt();
int d2 = sc.nextInt();
// Please write your code here.
// 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12
int[] cal = {0,31,28,31,30,31,30,31,31,30,31, 30, 31};
String[] day = {"Mon","Tue","Wed","Thu","Fri","Sat","Sun"};
int sum1 = 0;
for(int i = 1; i < m1; i++) {
sum1 += cal[i];
}
sum1 += d1;
int sum2 = 0;
for(int i = 1; i < m2; i++) {
sum2 += cal[i];
}
sum2 += d2;
int diff = (sum2 - sum1)%7;
if(diff < 0) diff = diff + 7;
System.out.println(day[diff]);
}
}
for(int i = 1; i < m1; i++)을 for(int i = 1; i <= m1; i++)라고 등호를 넣어버려서 잘못된 결과가 나왔었다.
풀이2 구현
import java.util.Scanner;
public class Main {
public static int numOfDays(int m, int d) {
// 계산 편의를 위해 월마다 몇 일이 있는지를 적어줍니다.
int[] days = new int[]{0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int totalDays = 0;
// 1월부터 (m - 1)월 까지는 전부 꽉 채워져 있습니다.
for(int i = 1; i < m; i++)
totalDays += days[i];
// m월의 경우에는 정확히 d일만 있습니다.
totalDays += d;
return totalDays;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// 변수를 선언하고 입력을 받습니다.
int m1 = sc.nextInt();
int d1 = sc.nextInt();
int m2 = sc.nextInt();
int d2 = sc.nextInt();
// 두 날짜간의 차이가 몇 일인지를 구합니다.
int diff = numOfDays(m2, d2) - numOfDays(m1, d1);
// 음수인 경우에는, 양수로 넘겨 계산해주면 올바르게 계산이 됩니다.
while(diff < 0)
diff += 7;
// 알맞은 요일의 이름을 출력합니다.
String[] dayOfWeek = new String[]{"Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"};
System.out.println(dayOfWeek[diff % 7]);
}
}