오늘의 문제는~
숫자를 입력받아서 배열에 넣고 for문으로 돌려서 조건에 해당하면 출력해주는 간단한 문제였다.
golang의 bufio에 익숙해지고 있는 중이라서, 요즘 계속 배열 문제를 풀고 있다.
아마 더 좋은 방법과 golang의 장점을 잘 살릴 수 있는 코드들이 많이 있을 것이라 생각하고 있어서 차근차근 다가가는 방식으로 접근하려 한다.
golang의 장점 중 하나는 error핸들링을 쉽게 할 수 있도록 return값에 error 메세지도 함께 반환해준다는 것이다.
그래서 입력받을 때, 처음 명시해준 타입이 맞는지, 몇개의 입력을 받았는지를 fmt.Scan()의 반환값으로 바로 받아볼 수 있어 많이 이용하는 것 같다.
문제는 28개의 입력을 받고, 입력받지 않은 2개의 숫자를 찾아내 출력해주면 되는 문제였으므로, 다음과 같이 풀었다.
package main
import (
"bufio"
"fmt"
"os"
)
func main(){
var studentSlice []bool = make([]bool, 30)
stdin := bufio.NewReader(os.Stdin)
for i:=0;i<28;i++{
var a int
_, err := fmt.Scan(&a)
if err != nil{
fmt.Println(err)
stdin.ReadString('\n')
} else{
studentSlice[a-1] = true
}
}
for i:=0;i<30;i++{
if studentSlice[i] == false{
fmt.Println(i+1)
}
}
}
메모리 효율..꽤 좋아서 마음에 든다.
golang에 js의 includes같은 함수가 있는지 궁금하다. 사실 없을 거 같긴 하지만..go라는 언어에게 있는 개발자 친화적인 메서드들을 알고싶다~