[Swift 알고리즘] 프로그래머스 LV1 - 04. 2016년

Updated:

프로그래머스 코딩테스트 연습문제 LV1 - 04. 2016년

2016년


문제 설명

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”


주어진 코드

func solution(_ a:Int, _ b:Int) -> String {
    return ''
}


제출한 코드

enum Day: Int {
    case FRI = 0
    case SAT
    case SUN
    case MON
    case TUE
    case WED
    case THU

    func getString() -> String {
        switch self {
        case .FRI:
            return "FRI"
        case .SAT:
            return "SAT"
        case .SUN:
            return "SUN"
        case .MON:
            return "MON"
        case .WED:
            return "WED"
        case .TUE:
            return "TUE"
        case .THU:
            return "THU"
        }
    }
}


func calcDayFromMonth(month: Int) -> Int {
    var day: Int = 0

    for i in 1..<month {
        switch i {
        case 1, 3, 5, 7, 8, 10, 12:
            day += 31
            break
        case 2:
            day += 29
            break

        case 4, 6, 9, 11:
            day += 30
            break

        default:
            break
        }
    }

    return day
}


func solution(_ a:Int, _ b:Int) -> String {
    var day = calcDayFromMonth(month: a) + b - 1

    day = day % 7

    let enumDay = Day.init(rawValue: day)

    return enumDay!.getString()
}


Leave a comment