Archive/Questions

[programmers/Swift] 2016년

Marco 2022. 5. 3. 17:23
728x90

programmers.co.kr - 코딩테스트연습 - Lv.1 - 연습문제 - 2016년

 

코딩테스트 연습 - 2016년

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

programmers.co.kr

Constraints :

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

 

Solution.swift :

//
//  Created by Yongwoo Marco on 2022/05/03.
//  Copyright © 2022 Yongwoo Marco Kim. All rights reserved.
//

func solution(_ a:Int, _ b:Int) -> String {
    let weekdays = ["SUN", "MON", "TUE", "WED", "THU", "FRI" , "SAT"]
    let months = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
    let dayCount = months[0..<a-1].reduce(0, +) + b - 1
    let index = (5 + dayCount) % 7
    return weekdays[index]
}

print(solution(5, 24)) // "TUE"

How I tried this :
윤년이라는 점으로 2월은 29일인 것

다른날은 주먹쥐고 세보았다 (구글링으로 확인해보니 맞았음.. ㅎ)

 

1월 1일의 인덱스는 5이기 때문에 

1월 1일 부터 주어진 날짜까지 모든 날의 합 = dayCount

 

What I got is :
주먹쥐고 세보는게 ... 정확했다..

문제에 관한 모든 저작권 : https://programmers.co.kr/

728x90