• Home
  • About
    • Ryureka Moment photo

      Ryureka

      Sin Prisa, Sin Pausa

    • About Me
    • Facebook
    • Github
    • Youtube
  • Projects
  • Posts
    • Posts
    • ProblemSolvings
    • Tags
    • Blog
    • Examples
  • ProblemSolving
    • ProblemSolving
    • BOJ
    • Programmers
    • LeetCode
    • Codetree
    • SWEA
  • FrontEnd
    • FrontEnd
    • HTML
  • BackEnd
    • BackEnd
    • Server
      • Server
      • Spring
      • NodeJS
    • DataBase
      • DataBase
      • MySQL
      • MongoDB
  • Programming
    • Programming
    • Java
    • JS
    • Python
    • CleanCode
  • ComputerScience
    • DataStructure
    • Algorithm

[Codetree] 요일 맞추기

26 Sep 2026

Reading time ~2 minutes

  • 풀이1 구현
  • 풀이2 구현
해당 문제는 코드트리 요일 맞추기에서 풀어보실 수 있습니다.

풀이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]);
    }
}


시뮬레이션 Share