티스토리 뷰
문제
대열이는 욱제의 친구다.
- “야 백대열을 약분하면 뭔지 알아?”
- “??”
- “십대일이야~ 하하!”
n:m이 주어진다. 욱제를 도와주자. (...)
문제 이해하기
n과 m의 최대공약수 g로 n과 m을 나눠주면 두 수를 최대한 약분할 수 있습니다.
코드
package main
import (
"bufio"
"bytes"
"fmt"
"os"
"strconv"
)
var (
scanner = bufio.NewScanner(os.Stdin)
writer = bufio.NewWriter(os.Stdout)
input []byte
)
func main() {
defer writer.Flush()
scanner.Split(bufio.ScanWords)
Setup()
Solve()
}
func Setup() {
input = scanBytes()
}
func Solve() {
nums := bytes.Split(input, []byte{':'})
a, b := bytesToInt(nums[0]), bytesToInt(nums[1])
g := gcd(a, b)
fmt.Fprintf(writer, "%d:%d\n", a/g, b/g)
}
func gcd(a, b int) int {
if b == 0 {
return a
}
return gcd(b, a%b)
}
func bytesToInt(b []byte) int {
res := 0
for _, v := range b {
res = res*10 + int(v-'0')
}
return res
}
func scanBytes() []byte {
scanner.Scan()
return scanner.Bytes()
}
시간: 4 ms
메모리:852 KB
분류: 수학, 문자열, 정수론, 유클리드 호제법
글에서 수정이 필요한 부분이나 설명이 부족한 부분이 있다면 댓글로 남겨주세요!
'Go > 문제 풀이' 카테고리의 다른 글
[백준 / Go] 11815번: 짝수? 홀수? (1) | 2023.10.19 |
---|---|
[백준 / Go] 9417번: 최대 GCD (1) | 2023.10.14 |
[백준 / Go] 4134번: 다음 소수 (0) | 2023.10.13 |
[백준 / Go] 13909번: 창문 닫기 (1) | 2023.10.11 |
[LeetCode / Go] 2571. Minimum Operations to Reduce an Integer to 0 (0) | 2023.10.05 |