Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

코딩응급실

프로그래머스: 2016년 본문

Java

프로그래머스: 2016년

Daeryuk Kim 2024. 3. 2. 20:43
import java.util.*;

class Solution {
    public String solution(int a, int b) {
       String answer = "";

      int[] c = {31,29,31,30,31,30,31,31,30,31,30,31};
      String[] MM ={"FRI","SAT","SUN","MON","TUE","WED","THU"};
      int Adate = 0;
      for(int i = 0 ; i< a-1; i++){
          Adate += c[i];
      }
      Adate += b-1;
      answer = MM[Adate % 7];

      return answer;
    }

    public static void main(String[] args) {
        int a = 5;
        int b = 24; 
    
        Solution sol = new Solution();
        String result = sol.solution(a,b);
        System.out.println(result);
    }
}

b-1을 더하는 이유는 배열 인덱스가 0부터 시작하고 1월 1일을 기준으로 삼기 때문입니다. 예를 들어 1월 1일은 b-1이 0이 되어 Adate에 더해지지 않습니다.

그리고 Adate를 7로 나눈 나머지를 구하면, 그것이 요일을 나타내는 배열 MM의 인덱스가 됩니다. 따라서 MM[Adate % 7]은 해당 날짜의 요일을 나타내게 됩니다.

예를 들어, 5월 24일을 계산하려면, 1월부터 4월까지의 날짜 수를 더하고 (이것이 for 루프에서 하는 일입니다), 그리고 5월의 날짜 수를 더하게 됩니다. 이 때 5월 24일이므로 b-1은 23이 되어 Adate에 더해집니다. 그러면 Adate는 1월 1일부터 5월 24일까지의 전체 날짜 수가 됩니다.