반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- weak
- firebase
- Understanding Swift Performance
- Remot Push
- WWDC16
- uikit
- entrypoint
- SWiFT
- userdefaults
- CoreLocation
- tableViewCell
- Choosing Between Structures and Classes
- TableView
- IBOutletCollection
- 원격 푸시
- 진입점
- RunLoop
- IBOutlet
- OperationQueue
- viewcontroller
- UIButton
- AppTransportSecurity
- 후행 클로저
- 연산 프로퍼티
- ios
- DispatchQueue
- 트레일링 클로저
- 동시성프로그래밍
- for-in
- property wrapper
Archives
- Today
- Total
iOS 공부하는 감자
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일같은 날짜는 주어지지 않습니다)
입출력 예
a | b | result |
5 | 24 | "TUE" |
내 풀이 (2.xx)ms
func solution(_ a:Int, _ b:Int) -> String {
let dateFormatter: DateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd"
dateFormatter.timeZone = TimeZone.current
let calendar: Calendar = Calendar.current
let date: Date = dateFormatter.date(from: "2016-\(String(a))-\(String(b))")!
let weekdayArray: [String] = ["SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT"]
return weekdayArray[calendar.dateComponents([.weekday], from: date).weekday!-1]
}
- 특정 형태의 문자열을 Date타입으로 변환시켜줄 DateFormatter를 생성하고
- 생성한 DateFormatter를 통해 입력받은 문자를 Date 형식으로 바꿔준다.
- Date타입을 dateComponent 메서드로 weekday 숫자만 추출하여 요일을 찾는다.
다른사람 풀이👍 (0.0x)ms
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]
}
- 요일을 담은 Array를 생성한다. (1월 1일이 "FRI"라고 주어졌으니 배열의 index 1번을 "FRI"로 맞춰서 생성)
- 각 달의 마지막 날짜를 담은 배열을 생성한다.
- 입력된 month의 직전 month까지의 모든 day와 매개변수로 주어진 day의 합을 totalDay에 저장한다. (0..<a-1 보다 0...a-2로 표현했으면 더 보기 편했을거 같다..(?))
- totalDay에 %7 연산으로 요일을 찾아낸다.
반응형