해결 방법 - 데이터 형식 도전 과제
여기서는 이전 도전 과제에 대한 해결 방법을 확인할 수 있습니다.
피보나치 시퀀스를 계산하는 프로그램 작성
이 도전 과제에 대한 해답은 다음 예제와 같을 것입니다.
package main
import "fmt"
func fibonacci(n int) []int {
if n < 2 {
return make([]int, 0)
}
nums := make([]int, n)
nums[0], nums[1] = 1, 1
for i := 2; i < n; i++ {
nums[i] = nums[i-1] + nums[i-2]
}
return nums
}
func main() {
var num int
fmt.Print("What's the Fibonacci sequence you want? ")
fmt.Scanln(&num)
fmt.Println("The Fibonacci sequence is:", fibonacci(num))
}
로마 숫자 변환기 만들기
이 도전 과제에 대한 해답은 다음 예제와 같을 것입니다.
package main
import (
"fmt"
)
func romanToArabic(numeral string) int {
romanMap := map[rune]int{
'M': 1000,
'D': 500,
'C': 100,
'L': 50,
'X': 10,
'V': 5,
'I': 1,
}
arabicVals := make([]int, len(numeral)+1)
for index, digit := range numeral {
if val, present := romanMap[digit]; present {
arabicVals[index] = val
} else {
fmt.Printf("Error: The roman numeral %s has a bad digit: %c\n", numeral, digit)
return 0
}
}
total := 0
for index := 0; index < len(numeral); index++ {
if arabicVals[index] < arabicVals[index+1] {
arabicVals[index] = -arabicVals[index]
}
total += arabicVals[index]
}
return total
}
func main() {
fmt.Println("MCLX is", romanToArabic("MCLX"))
fmt.Println("MCMXCIX is ", romanToArabic("MCMXCIX"))
fmt.Println("MCMZ is", romanToArabic("MCMZ"))
}