[Programmers] [Lv.1] [Swift] 2016년

doyeonjeong_·2022년 8월 11일
0

프로그래머스

목록 보기
26/35
post-thumbnail
post-custom-banner

Hits

문제

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"//"EE" to get short style
    return dateFormatter.string(from:date!).uppercased()
}

Reference

profile
블로그 이사중 🚚 byukbyak.tistory.com
post-custom-banner

0개의 댓글