dev/algorithm
BOJ / 1182λ² / λΆλΆμμ΄μ ν© [Go][Python3]
crscnt
2021. 3. 21. 21:00
π©π»π» λ¬Έμ
1182λ²: λΆλΆμμ΄μ ν©
첫째 μ€μ μ μμ κ°μλ₯Ό λνλ΄λ Nκ³Ό μ μ Sκ° μ£Όμ΄μ§λ€. (1 ≤ N ≤ 20, |S| ≤ 1,000,000) λμ§Έ μ€μ Nκ°μ μ μκ° λΉ μΉΈμ μ¬μ΄μ λκ³ μ£Όμ΄μ§λ€. μ£Όμ΄μ§λ μ μμ μ λκ°μ 100,000μ λμ§ μλλ€.
www.acmicpc.net
βπ» νμ΄
π¨ Go
// https://www.acmicpc.net/problem/1182
package main
import (
"bufio"
"fmt"
"os"
)
var (
count int
)
func main() {
reader := bufio.NewReader(os.Stdin)
writer := bufio.NewWriter(os.Stdout)
defer writer.Flush()
var n, s int
fmt.Fscanln(reader, &n, &s)
var seq = make([]int, n)
for i := 0; i < n; i++ {
fmt.Fscanf(reader, "%d ", &seq[i])
}
computeSubsequenceCount(0, 0, s, seq)
fmt.Fprintln(writer, count)
}
func computeSubsequenceCount(index, sum, aim int, seq []int) {
if index > len(seq)-1 {
return
}
sum += seq[index]
if sum == aim {
count++
}
computeSubsequenceCount(index+1, sum, aim, seq) // νμ¬ μΈλ±μ€ κ°μ λνμ§ μλ κ²½μ°
computeSubsequenceCount(index+1, sum-seq[index], aim, seq) // νμ¬ μΈλ±μ€ κ°μ λνλ κ²½μ°
}
π¨ Python3
# https://www.acmicpc.net/problem/1182
import sys
count = 0
seq = []
def compute_subsequence_count(index, sum, aim):
global count
if index > len(seq)-1:
return
sum += seq[index]
if sum == aim:
count += 1
compute_subsequence_count(index+1, sum, aim)
compute_subsequence_count(index+1, sum-seq[index], aim)
if __name__ == "__main__":
n, s = list(map(int, sys.stdin.readline().split()))
seq = list(map(int, sys.stdin.readline().split()))
compute_subsequence_count(0, 0, s)
print(count)
728x90