일차원 배열 문제 중 어제 문제보다는 훨씬 쉬운 문제였는데, bufio를 써보고 싶어서 조금 쉬운 문제를 고르게 되었다.
bufio 패키지에서는 입출력 인터페이스 함수를 제공한다.
등의 함수를 많이 사용한다고 한다.
파일에 읽고 쓸 때 이용하는 입출력 인터페이스 함수로 보인다.
나는 다음과 같은 코드에 bufio 패키지를 사용해보았는데,
stdin := bufio.NewReader(os.Stdin)
파일 대신 os.Stdin에서 입력을 불러오는 reader를 stdin이라는 이름에 할당한다는 의미라고 한다.
우리는 이것을 이용해 한줄의 입력을 불러오고, 한글자 한글자 읽다가 에러가 났을 경우 읽기를 중단하고, error 메세지를 내보낸 후 입력을 이어갈 수 있도록 error handling을 할 수 있다.
package main
import (
"bufio"
"fmt"
"os"
)
func main(){
var a, c, count int
fmt.Scan(&a)
var slice []int = make([]int, a)
stdin := bufio.NewReader(os.Stdin)
for i:=0;i<a;i++{
var b int
_, err:=fmt.Scan(&b)
if err!=nil{
fmt.Println(err)
stdin.ReadString('\n')
} else {
slice[i] = b
}
}
fmt.Scan(&c)
for i:=0;i<a;i++{
if c == slice[i]{
count += 1
}
}
fmt.Println(count)
}
문제는 위와 같이 풀었고,
이 정도의 효율이 나왔다.
너무 단순한 문제라서 좀 그렇긴하지만 bufio 맛보기에 좋은 경험이었다.
너무 피곤해~얼른 자야지