Go/Programmers
[Go] 프로그래머스 연습문제 LV1 - 2016년
Gopythor
2022. 5. 28. 22:56
728x90
반응형
문제 설명
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일같은 날짜는 주어지지 않습니다)
입출력 예
abresult5 | 24 | "TUE" |
func solution(a int, b int) string {
day := []string{"FRI", "SAT", "SUN", "MON", "TUE", "WED", "THU"}
month := []int{31,29,31,30,31,30,31,31,30,31,30,31}
days := -1
for i:=0; i<a-1; i++{
days += month[i]
}
days += b
return day[days%7]
}
다른 사람 코드
func solution(a int, b int) string {
num2day := map[int]string {
0: "SUN",
1: "MON",
2: "TUE",
3: "WED",
4: "THU",
5: "FRI",
6: "SAT",
}
date := 5
for month := 1; month < a; month++ {
switch month {
case 1, 3, 5, 7, 8, 10, 12: date += 31
case 4, 6, 9, 11: date += 30
default: date += 29
}
}
return num2day[(date + b - 1) % 7]
}
import "time"
func solution(a int, b int) string {
week := []string {"SUN","MON","TUE","WED","THU","FRI","SAT"}
offset := 5
firstDay := time.Date(2016, 1, 1, 0,0,0,0,time.UTC)
targetDay := time.Date(2016, time.Month(a), b, 0,0,0,0,time.UTC)
diff := targetDay.Sub(firstDay).Hours() / 24
return week[(int(diff)+ offset) % 7 ]
}
import "time"
func solution(a int, b int) string {
days := []string{"SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT"}
t := time.Date(2016, time.Month(a), b, 0, 0, 0, 0, time.UTC)
return days[int(t.Weekday())]
}
728x90
반응형