본문 바로가기
Problem Solving

[Swift] 프로그래머스 2016년(lv. 1)

by DuncanKim 2023. 1. 25.
728x90

[Swift] 프로그래머스 2016년(lv. 1)

 

1. 문제

https://school.programmers.co.kr/learn/courses/30/lessons/12901

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

2. 접근

여러 해를 구하는 것이 아니고 2016년 안의 일자를 구하는 것이기 때문에 상수만 잘 설정해주면 된다.

테이저건으로 설정하면 안된다.

1월이면 totalDay(일자를 내부 변수로 받은 것)에 4를 더해서 7로 나눈 나머지를 구한다.

weekArray의 인덱스에 따라 요일이 출력되는데, 1일이 목요일이었기 때문에 이렇게 설정하였다.

 

나머지 달의 경우, '요일'을 구하는 것이기에 기준점을 1월 1일로 하여 구해줘도 상관이 없다.

그래서 totalDay에 각 월 별 일수를 더해주었다. 반복문을 모두 통과한다음, totalDay + 4를 하고 7로 나눈 나머지를 weekArray에서 요일을 구하는 인덱스로 활용하고 최종적으로 String 값을 리턴한다.

 

3. 코드

func solution(_ a:Int, _ b:Int) -> String {
    let weekArray = ["SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT"]
    let daysArray = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
    var totalDay = b
    
    if a == 1 {
        return weekArray[(totalDay + 4) % 7]
    } else {
        for i in 0 ... a - 2 {
            totalDay += daysArray[i]
        }
    }
    return weekArray[(totalDay + 4) % 7]
}
728x90

댓글