아요 개발 일기

[프로그래머스] Level 1. 2016 년 본문

Algorithms/문제 풀이

[프로그래머스] Level 1. 2016 년

소진이 2023. 1. 17. 10:28

문제

 

 

풀이

저는 week와 month를 Array로 선언해놓고 풀었습니다!

a의 값만큼 for 문을 돌려주고

만약, a = 5라면 month[0...5]까지 0, 31, 29, 31, 30, 31 값을 result에 값에 더해줍니다

그 후에 result 값에 b 값도 더해주고, 일주일은 7일이니 result % 7 의 값을 week에서 찾아서 Return 합니다.

 

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]
    
}

저랑 비슷한 방법인데 이 풀이는 제 For - in 문을 한 줄로 줄였네요?

Reduce 고차 함수를 사용해서 monthDay를 해당 값까지 0번째부터 더해주고 b를 더한 값을 이용합니다. 

제 for-in 문과 동일하죠?

 

정확성 테스트

내 풀이
다른 풀이

이번 정확성 테스트도 전과 비슷하네요!

고차함수를 사용해서 다른 풀이가 더 무겁게 나왔어요 ㅎㅎ

짧은 코드라서 for-in 문을 사용하는게 더 나은 것 같아요!!

 

잘 못된 부분이나 더 좋은 풀이가 있으면 댓글로 알려주세요 ㅎㅎㅎㅎ!