오늘은 프로그래머스의 2016년 이라는 문제를 풀었다. 문제는 아래와 같으며 실제 2016년에 대한 날짜가 주어지면 무슨요일일지 계산을 해야하는 문제이다.

우선 문제를 풀기 위해서 어떤 방식을 사용할지 생각을 해봐야 한다. a월 b일로 들어오는 날짜는 실제로 있는 날만 들어올 것이기 때문에 Date 를 사용하면 실제 날짜를 알 수 있기 때문에 Date를 사용하기로 했다. 또한 날짜에 대한 요일을 알아내기 위해 Calender 도 사용했다.
// 변수 a월 과 b 일을 String 으로 변경
let dateString = "2016-\(a)-(b)"
// 날짜의 형식을 지정하기 위해 DateFormatter 를 사용
let dateFormatter = DateFormatter()
// 날짜 형식 지정
dateFormatter.dateFormat = "yyyy-mm-dd"
// 날짜 형식에 무조건 맞지만 혹시 모르니깐 확인을 한다.
guard let date = dateFormatter.date(from: dateString) else {
return ""
}
// 요일 계산
let calender = Calender.current
let weekDay = claender.component(.weekday, from: date)
// 요일 반환
switch weekDay {
case 1:
result = "SUN"
case 2:
result = "MON"
case 3:
result = "TUE"
case 4:
result = "WED"
case 5:
result = "THU"
case 6:
result = "FRI"
case 7:
result = "SAT"
default:
result = "no"
}
return result
코드를 살펴보면 우선 2016년을 기준으로 하기 때문에 2016을 적어주고, a 와 b 변수로 들어오는 월과 일을 추가해서 문자열로 만들어준다. 그런 다음 실제 Date로 변환을 해주고 변환해서 나온 date 객체를 Calender 로 계산하여 무슨요일인지 알아내는 방법이다. 아직까지는 낮은 단계의 문제를 풀고있어서 쉽게 풀었던것 같다.
'TIL(Today I Learned)' 카테고리의 다른 글
| 2024.05.24 Today I Learned (0) | 2024.05.24 |
|---|---|
| 2024.05.23 Today I Learned (0) | 2024.05.23 |
| 2024.05.16 Today I Learned (0) | 2024.05.16 |
| 2024.05.14 Today I Learned (0) | 2024.05.14 |
| 2024.05.13 Today I Learned (0) | 2024.05.13 |