백준 2231 분해합 (Go)

ay.zip·2022년 7월 5일
0

TIL

목록 보기
46/47

[1] 문제

백준 2231

245의 분해합을 구하는 방법 = (245 + 2 + 4 + 5)
245의 분해합은 256이 된다.
따라서 245는 256의 생성자가 된다.

주어진 n의 가장 작은 생성자를 구하는 것이 문제가 요구하는 것
생성자가 존재하지 않는 경우는 0을 출력하기

[2] 해결 방법

숫자 n이 주어진 경우

(1) 1~n까지 루프를 돌린다.
(2) (1)의 숫자를 모듈로 계산을 통해 하나씩 떼어내고 더한다.
(3) (2)의 숫자에 (1)의 완전한 수를 더한다
(4) (3)이 n과 같은지 확인한다.

package main

import (
	"bufio"
	"fmt"
	"os"
)

func bruteforce(n int) {
	var answer = 0
	for i := 1; i <= n; i++ {
		res := modulo(i)
		res += i
		if res == n {
			answer = i
			break
		}
	}
	fmt.Println(answer)
}

func modulo(n int) int {
	var sum = 0
	for n > 0 {
		var temp = n % 10
		sum += temp
		n = n / 10
	}
	return sum
}

func main() {
	reader := bufio.NewReader(os.Stdin)
	writer := bufio.NewWriter(os.Stdout)
	defer writer.Flush()

	var n int
	fmt.Fscanln(reader, &n)
	bruteforce(n)

}

0개의 댓글

Powered by GraphCDN, the GraphQL CDN