본문 바로가기
Kotlin(프로그래머스)/Level 1

[프로그래머스/Kotlin] 2016년

by Yuno. 2022. 3. 19.
728x90

문제 링크 -> https://programmers.co.kr/learn/courses/30/lessons/12901

 

코딩테스트 연습 - 2016년

2016년 1월 1일은 금요일입니다. 2016년 a월 b일은 무슨 요일일까요? 두 수 a ,b를 입력받아 2016년 a월 b일이 무슨 요일인지 리턴하는 함수, solution을 완성하세요. 요일의 이름은 일요일부터 토요일까

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까지 반복문을 돌면서 각 월에 맞는 일수를 date에 더해줍니다.
2. 2016년은 윤년이기 때문에 2월이라면 29를 더하고, a월이라면 b를 더합니다. 

class Solution {
    fun solution(a: Int, b: Int): String {
        var day = arrayOf("THU", "FRI", "SAT", "SUN", "MON", "TUE", "WED")
        var date = 0
        
        for(i in 1..a){
            if(i<=7){
                if(i==a)  date += b 
                else if( i==2 && a>2) date += 29 
                else if( i%2==0 ) date+=30 
                else if( i%2 !=0 ) date+=31 
            }
            else{
                if( i== a) date += b
                else if(i%2 == 0) date += 31
                else if(i%2 != 0) date += 30
            }
        }
        return day[date%7] 
    }
}

------------------------------------------------------------결과------------------------------------------------------------------

풀고나서 다른분 풀이를 봤는데 Array에 그냥 월별 일수를 넣어두셨더라구요... 2016년으로 제한되어있고 윤년이라고 했으니 그방법이 더 효율이 좋으려나 싶네요

 

 

 

 

- 문제에 대한 질문 댓글 환영!
- 중간에 잘못된 부분이 있다면 댓글로 남겨주세요. 수정하겠습니다.

728x90

댓글