반응형
이전 포스트에 이어
프로그래머스 2016년을 Go lang으로 풀어보겠다.
다른 언어 풀이를 보고 싶다면 아래 링크를 확인해보자
2022.08.20 - [Coding Test/Python] - [프로그래머스] 2016년 Python Code
2022.08.20 - [Coding Test/C++] - [프로그래머스] 2016년 C++ Code
2022.08.20 - [Coding Test/JavaScript] - [프로그래머스] 2016년 JavaScript Code
문제
구현
구현은 2016년 안에서만 계산하면 되기 때문에
모든 월의 일 수와 요일들을 배열에 넣고
결괏값을 계산했다.
코드로 보겠다.
코드
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}
sum := 0
for i := 0; i<a-1; i++ {
sum += month[i]
}
sum += b-1
return day[sum % 7]
}
a-1까지 반복문을 돌아서
month를 sum 해서 추가하고 일을 추가해서 계산할 수 있게 했다.
day 배열은 mod(%) 연산과 맞게 하기 위해
금요일부터 배열에 넣었다.
다른 풀이
Go에서도 출제자의 의도를 회피하기 위해 time를 써서 풀어보았다
import "time"
func solution(a int, b int) string {
t := time.Date(2016, time.Month(a), b, 0, 0, 0, 0, time.UTC)
day := [...]string{"SUN", "MON", "TUE", "WED", "THU","FRI", "SAT"}
return day[int(t.Weekday())]
}
time.Date로 시간을 만들고 t.Weekday()로 시간을 가져왔다.
여기서 time.Month를 했는데 이것을 하지 않으면 int타입을 바꿀 수 없다고 에러가 발생해서
time.Month를 사용해서 넣어 주었다.
이 방법도 여러 연도가 있다면 훨씬 괜찮은 방법이고 아주 간단하게 풀 수 있다.
이렇게 Python, C++, JS, Go로 프로그래머스 2016년을 풀어보았다.
반응형
'Coding Test > Go' 카테고리의 다른 글
[프로그래머스] 나머지가 1이 되는 수 찾기 Go Code (0) | 2022.08.23 |
---|---|
[프로그래머스] 성격 유형 검사하기 Go Code (0) | 2022.08.19 |
[프로그래머스] 약수의 개수와 덧셈 Go Code (0) | 2022.08.17 |
[프로그래머스] K번째수 Go Code (0) | 2022.08.16 |
[프로그래머스] 체육복 Go Code (0) | 2022.08.10 |
댓글