문제.
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 |