IOS/Swift Algorithm Level 1

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

  풀이.

import Foundation
// 2016년은 윤년이다 == 366일
// 2016 1 1 = 금요일
// 2016 2월은 29일까지
// 생각하여야할 것은 fri를 1로 시작해서 한바뀌돌면 8이라는것
func solution(_ a:Int, _ b:Int) -> String {
let weekArray = [ "MON", "TUE", "WED", "THU", "FRI", "SAT", "SUN"]
 let monthDayArray = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]

    var first = 4
    for day in 0..<a-1 {
        first += monthDayArray[day]
    }
    first += b-1

    return "\(weekArray[first%7])"
}


// 풀이참고
//func solution(_ a:Int, _ b:Int) -> String {
//
//    let w = ["THU", "FRI", "SAT", "SUN", "MON", "TUE", "WED"]
//    let monthDay = [ 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
//    let totalDay = monthDay[0..<a-1].reduce(0, +) + b
//
//    return w[totalDay % 7]
//}
  • 풀이 요구사항
    • 나머지의 활용능력을 요구하는 것 같다 나머지는 기본적인 수준이였다.
    • 다만 생각해야 할것은 기준점을 어디로 두느냐의 차이였다 
    • 아래 참고한 풀이를 보면 1월 1일을 요일의 두번째 즉 w[1]의 자리에 두었다. 보통은 0에다 두려고 할텐데...
      많이 배워야 겠다. 

'IOS > Swift Algorithm Level 1' 카테고리의 다른 글

Swift. 나누어 떨어지는 숫자 배열  (0) 2020.10.09
Swift. 가운데 문자열  (0) 2020.10.08
Swift. 체육복  (0) 2020.10.06
Swift. K번째 수  (0) 2020.10.05
Swift. 크레인 인형뽑기 게임  (0) 2020.10.04