문제
2016년
풀이
func solution(_ a:Int, _ b:Int) -> String {
let week = ["THU","FRI","SAT","SUN","MON","TUE","WED"]
let month = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
var day = b
for i in 0 ..< (a-1) {
day += month[i]
}
return week[day%7]
}
🤔 FEEDBACK
- 요즘 계속 낮은 점수만 받는 거 보면 너무 간단하게만 풀려고 하고 있지 않나 생각하게 된다.
- 처음엔 날짜 계산 관련 함수가 있지 않을까라는 생각을 했었는데 간단한 문제를 복잡한 길로 돌아가는 것 같아서 그만 두었다.
- 근데 아래에 그 복잡함을 무릎쓰고 풀어낸 코드가 있다...!
- 덕분에
DateFormatter()
를 알아간다.
- 보통 사용되는 "yyyy-MM-dd HH:mm" 이런 형식은 익숙한데 "EE"에서 멈칫했다.
- 알고보니
"E"
, "EE"
, "EEE"
는 모두 default 값으로 "Fri" 같은 요일의 약어를 표현하는데 쓰인다고 한다.
- 심지어 Locale에 따라
"금"
이런식으로 표기가 된다고 한다.
따로 설정이 없는 걸 보면 위치나 현재 컴퓨터 설정 기반인가?
다른 풀이
import Foundation
func solution(_ a:Int, _ b:Int) -> String {
let dateFormatterGet = DateFormatter()
dateFormatterGet.dateFormat = "yyyy-MM-dd"
let date = dateFormatterGet.date(from:"2016-\(a)-\(b)")
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "EE"
return dateFormatter.string(from:date!).uppercased()
}
Reference