반응형
안녕하세요. 개발 중인 정주입니다.
오늘은 프로그래머스 - 2016년 문제를 풀었습니다.
목차
Github
문제 링크
https://programmers.co.kr/learn/courses/30/lessons/12901
풀이
은근히 헤맨 문제입니다. Calendar를 써봐..!라는 유혹이 머릿속을 혼란스럽게 만들더라고요.
하지만 주어진 양식을 보면 Foundation이 import 되어 있지 않습니다.
따라서 해당 문제는 수식을 이용해 해결해야 합니다.
days와 weekdays 배열은 미리 선언해두었습니다.
다만 문제에 맞춰 배열을 변형하지는 않고 원본 그대로 선언했습니다.
처음에는 반복문을 이용해 day를 더했는데요.
다른 분께서는 reduce를 이용해서 해결했더라고요.
reduce를 보고 나니 이 문제와 찰떡인 것 같아 배열 슬라이스와 접목하여 문제를 다시 제출, 통과했습니다.
아직은 문제와 고차 함수와의 연결이 자연스럽지 못하네요..
레벨 1을 다 풀면 어느 정도 익숙해지겠죠? ㅠㅠ
전체 코드
func solution(_ a:Int, _ b:Int) -> String {
let days: [Int] = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
let weekdays: [String] = ["SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT"]
var resultDay = days[0..<a-1].reduce(0, +) + (b-1)
resultDay += weekdays.firstIndex(of: "FRI")!
return weekdays[resultDay % 7]
}
let a = 2, b = 1
print(solution(a, b))
아직은 초보 개발자입니다.
더 효율적인 코드 훈수 환영합니다!
공감과 댓글 부탁드립니다.
반응형