티스토리 뷰
간단하게 golang 입출력 빠르게 하는 법
(백준 문제로 golang 연습하다가 시간초과 나와서 fmt 개 느린거 알게됨)
예시 문제 : 백준 1850
(그냥 이거 풀다 시간초과 나서 이걸로 올림)
(간단한 알고리즘 설명 : 어짜피 1로만 이루어진 수 => 최대 공약수 그냥 구해서 그 수만큼 1 출력하면 됨,
ex) 111, 1111111은 1이 3개, 6개 => gcd(3,6)=3 => 정답 111)
https://www.acmicpc.net/problem/1850
방법 : bufio, os를 쓰자
bufio로 reader와 writer를 각각 stdin, stdout 으로 설정 후
Fscanf, Fscanln, Fprintf, Fprintln 등을 형식에 맞게 쓰자 (첫 번째 파라미터로 reader, writer 버퍼 지정)
마지막에 writer.Flush() 해주기
package main
import (
"bufio"
"fmt"
"os"
)
func gcd(a int64, b int64) int64 {
var result int64 = 0
if a < b {
a, b = b, a
}
var q int64 = a
var r int64 = b
for {
if r == 0 {
result = a
break
}
q = a / b
r = a - (q * b)
a, b = b, r
}
return result
}
func main() {
var a int64 = 0
var b int64 = 0
reader := bufio.NewReader(os.Stdin)
writer := bufio.NewWriter(os.Stdout)
fmt.Fscanf(reader, "%d %d", &a, &b)
//fmt.Fscanln(reader, &a, &b)
var result = gcd(a, b)
for i := 0; i < int(result); i++ {
fmt.Fprintf(writer, "1")
}
writer.Flush()
}
'메모' 카테고리의 다른 글
golang 테스트 간단 정리 (testing, github.com/stretchr/testify) (0) | 2022.02.15 |
---|---|
golang 문자열 입출력 공백 포함하기 (0) | 2022.02.15 |
Go - slice 기본 내용 정리 (0) | 2022.01.26 |
github gist test (0) | 2021.05.27 |
python 실행 파일 만들기 (pyinstaller) (0) | 2021.05.18 |
댓글