Myo-Kyeong Tech Blog

[프로그래머스] Lv.1 2016년 (Python / Java) 본문

프로그래머스

[프로그래머스] Lv.1 2016년 (Python / Java)

myo-kyeong 2023. 6. 19. 23:15
728x90
반응형

 

코딩테스트 연습 - 2016년 | 프로그래머스 스쿨 (programmers.co.kr)

 

문제 설명

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일같은 날짜는 주어지지 않습니다)

입출력 예

 


문제 풀이

  • 주어진 날짜가 1월 1일부터 며칠이나 떨어져 있는지 계산 (a월 이전까지의 월에 대한 일수  + b일 - 1 )
  • '(금)요일' 부터 요일차이를 알기 위해 7로 나눈 나머지 구하기
  • 금요일 기준으로 계산한 요일 차이를 더하여 해당 요일에 맞는 문자열 반환

 

[Python]

def solution(a, b):
    days = ["FRI", "SAT", "SUN", "MON", "TUE", "WED", "THU"]
    month_days = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] 
    
    return days[(sum(month_days[:a-1]) + b - 1) % 7]

 

[Java]

class Solution {
    public String solution(int a, int b) {
        String[] days = {"FRI", "SAT", "SUN", "MON", "TUE", "WED", "THU"};
        int[] monthDays = {31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};    
        int totalDays = 0;
        
        for (int i = 0; i < a - 1; i++) 
            totalDays += monthDays[i];
        
        return days[(totalDays + b - 1) % 7];
    }
}

 

728x90
반응형