ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Java] - 2016년 (12901) (switch 문)
    알고리즘/프로그래머스 2024. 3. 6. 10:17

    📚 문제 - 12901

    2016년 1월 1일은 금요일입니다. 2016년 a월 b일은 무슨 요일일까요? 두 수 a ,b를 입력받아 2016년 a월 b일이 무슨 요일인지 리턴하는 함수, solution을 완성하세요. 요일의 이름은 일요일부터 토요일까지 각각SUN,MON,TUE,WED,THU,FRI,SAT 입니다. 예를 들어 a=5, b=24라면 5월 24일은 화요일이므로 문자열 "TUE"를 반환하세요.


    제한사항

    • 2016년은 윤년입니다.
    • 2016년 a월 b일은 실제로 있는 날입니다. (13월 26일이나 2월 45일같은 날짜는 주어지지 않습니다)

    입출력 예

    a b result
    5 24 "TUE"

     

    ⌨️ 작성한 코드

    class Solution {
        public String solution(int a, int b) {
            int[] daysInMonth = {31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
            String[] daysOfWeek = {"FRI", "SAT", "SUN", "MON", "TUE", "WED", "THU"};
            
            // 1월1일부터 a월 b일까지 일 수 계산
            int totalDays = 0;
            for (int i = 0; i < a - 1; i++) {
                totalDays += daysInMonth[i];
            }
            //totalDays에는 1월 1일이 포함되어 있으므로 1 빼기
            totalDays += b - 1;
            
            // 2016년 1월 1일이 금요일이므로 금요일부터 시작하여 계산
            return daysOfWeek[totalDays % 7];
        }
    }
    • 접근 방식:
      문제를 보고 총 일 수를 계산해서 7로 나누면 무슨 요일인지 알 수 있을 거라 생각했다. 그래서 1월부터 각 월마다의 일수를 담은 배열을 만들어서 for문을 통해 일 수의 합을 totalDays에 넣었다. 이를 나눈 나머지 값을 통해 무슨 요일인지를 출력하도록 했다.
    • 문제&해결: 처음에는 totalDays를 계산할 때 -1을 하지않아서 틀렸었다. 1월 1일, 즉 하루가 포함되어있던 것을 빼주니까 정답이 도출되었다.

     

    👀 좋아요 98개의  다른  사람의 풀이

    class TryHelloWorld
    {
        public String getDayName(int a, int b) {
           String answer = " ";
            int[] monthDay={31,29,31,30,31,30,31,31,30,31,30,31};
            for (int i = 1; i < a; i++) {
                b+=monthDay[i-1];
            }
            switch(b%7){
            case 3:answer="SUN";break;
            case 4:answer="MON";break;
            case 5:answer="TUE";break;
            case 6:answer="WED";break;
            case 0:answer="THU";break;
            case 1:answer="FRI";break;
            case 2:answer="SAT";break;
            }
            return answer;
        }
    }

     

    ✅ 배운 점

    switch 문: 여러 가지 경우에 따라 다른 동작을 수행할 때 사용한다.
    주로 특정 변수의 값을 기반으로 다른 코드 블록을 실행하는 데에 쓰인다.
    변수가 각 case에 해당하는 값과 일치하는 경우, 해당 case의 코드 블록이 실행된다. 만약 어떤 case도 해당되지 않는다면 default 문 아래의 코드 블록이 실행된다.

    주의할 점은 각 case 끝에는 반드시 break 문을 사용하여 switch 문을 빠져나와야 한다는 것이다. 그렇지 않으면 다음 case들도 실행될 수 있기 때문이다.

    switch (변수) {
        case 값1:
            // 값1에 해당하는 동작 수행
            break;
        case 값2:
            // 값2에 해당하는 동작 수행
            break;
        ...
        default:
            // 위의 case에 해당하지 않는 경우 수행할 동작
    }
Designed by Tistory.