그냥 문제를 위해 만든 진수법이라고 생각했는데, 검색해보니 실제로 있는 이론이라서 놀랐다.
정답률이 30% 언저리라서 많이 어려운 건가 싶었는데, 관련 이론을 알면 굉장히 쉽게 풀 수 있는 문제이다.
package main
import (
"fmt"
"strconv"
)
func main() {
dec := 0
fmt.Scan(&dec)
quotient := dec
remain := 0
negaBinary := ""
if dec == 0 {
negaBinary = "0"
}
for quotient != 0 {
remain = quotient % -2
quotient /= -2
if remain < 0 {
quotient++
remain += 2
}
negaBinary = strconv.Itoa(remain) + negaBinary
}
fmt.Print(negaBinary)
}
다른 진수 변환과 똑같이 몫이 0이 나올 때까지 나눠주면 된다. 다만 나머지가 음수일 때를 잘 처리해주어야 한다.
❌