ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

๐Ÿ‘ฉ๐Ÿป‍๐Ÿ’ป ๋ฌธ์ œ

 

14606๋ฒˆ: ํ”ผ์ž (Small)

์˜ˆ์ œ1์˜ ์ž…๋ ฅ์ด 1์ด๋ฏ€๋กœ, ๊ฒŒ์ž„ ์‹œ์ž‘๋ถ€ํ„ฐ ๊ฐ‘์ด ๋ถ„๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ํ”ผ์žํƒ‘์ด ์—†์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๊ฐ‘์ด ์–ป๋Š” ์ฆ๊ฑฐ์›€์€ 0์ž…๋‹ˆ๋‹ค. ์˜ˆ์ œ2์˜ ์ •๋‹ต 3์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ณผ์ •์„ ํ†ตํ•ด ์–ป์–ด์ง‘๋‹ˆ๋‹ค. ๋จผ์ € ๋†€์ด๋ฅผ ์‹œ์ž‘

www.acmicpc.net


โœ๐Ÿป ํ’€์ด

๐ŸŽจ Go

// https://www.acmicpc.net/problem/14606
package main

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

var (
	dp []int
)

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

	var n int
	fmt.Fscanln(reader, &n)
	dp = make([]int, n+1)
	fmt.Fprintln(writer, joy(n))
}

func joy(n int) int {
	if n == 1 {
		return 0
	}
	if n == 2 {
		return 1
	}
	dp[2] = 1
	dp[n] = (n/2)*(n-n/2) + joy(n/2) + joy(n-n/2)
	return dp[n]
}

๐ŸŽจ Python3

# https://www.acmicpc.net/problem/14606
import sys

dp = []

def joy(n):
    if n == 1:
        return 0
    if n == 2:
        return 1
    dp[2] = 1
    dp[n] = (n//2)*(n-n//2) + joy(n//2) + joy(n-n//2)
    return dp[n]

if __name__ == "__main__":
    n = int(sys.stdin.readline())
    dp = [0 for _ in range(n+1)]
    print(joy(n))
728x90
๋Œ“๊ธ€