:)
[백준] 색종이 만들기, [백준] 1학년, [백준] 동전1 본문
https://www.acmicpc.net/problem/2630
2630번: 색종이 만들기
첫째 줄에는 전체 종이의 한 변의 길이 N이 주어져 있다. N은 2, 4, 8, 16, 32, 64, 128 중 하나이다. 색종이의 각 가로줄의 정사각형칸들의 색이 윗줄부터 차례로 둘째 줄부터 마지막 줄까지 주어진다.
www.acmicpc.net
재귀
- 재귀를 사용하여 범위를 좁혀가며 whites, blues 계산
import sys
def solution(n, paper):
def f(i,j,n):
if n == 1:
return (1,0) if paper[i][j] == 0 else (0,1)
splits = [f(i,j, n//2), f(i+n//2, j, n//2), f(i,j+n//2,n//2), f(i+n//2,j+n//2,n//2)]
# print(splits)
whites = sum(s[0] for s in splits)
blues = sum(s[1] for s in splits)
if whites == 0:
return (0,1)
elif blues == 0:
return (1,0)
return (whites, blues)
return f(0,0,n)
n = int(sys.stdin.readline())
paper = [[*map(int, row.split())] for row in sys.stdin.readlines()]
print(*solution(n,paper), sep='\n')
https://www.acmicpc.net/problem/5557
5557번: 1학년
상근이가 1학년 때, 덧셈, 뺄셈을 매우 좋아했다. 상근이는 숫자가 줄 지어있는 것을 보기만 하면, 마지막 두 숫자 사이에 '='을 넣고, 나머지 숫자 사이에는 '+' 또는 '-'를 넣어 등식을 만들며 놀
www.acmicpc.net
DP
- counter를 사용해 +,- 해서 나온 수를 count
import sys
from collections import Counter
def solution(N, nums):
dp = Counter({nums[0]:1})
for num in nums[1:-1]:
new_dp = Counter()
for k, cnt in dp.items():
if k+num <= 20:
new_dp[k+num] += cnt
if k-num >=0:
new_dp[k-num] += cnt
# print(new_dp)
dp = new_dp
return dp[nums[-1]]
N = int(sys.stdin.readline())
nums = [*map(int, sys.stdin.readline().split())]
print(solution(N,nums))
https://www.acmicpc.net/problem/2293
2293번: 동전 1
첫째 줄에 n, k가 주어진다. (1 ≤ n ≤ 100, 1 ≤ k ≤ 10,000) 다음 n개의 줄에는 각각의 동전의 가치가 주어진다. 동전의 가치는 100,000보다 작거나 같은 자연수이다.
www.acmicpc.net
DP
if k=10 일때 5원을 사용하는 경우와 사용하지 않는 경우가 있다.
사용하는 경우 -> 1,2,5를 사용해 10-5를 만듬
사용하지 X -> 1,2 사용해 10을 만듬
--> f(n, k-coin) + f(n-1, k)
import sys
def solution(n,k,coins):
dp = [1] + [0]*k
for c in coins:
for money in range(c, k+1):
dp[money] += dp[money-c]
return dp[-1]
n,k = map(int,sys.stdin.readline().split())
coins = [*map(int, sys.stdin.readlines())]
print(solution(n,k,coins))
'Algorithm(python)' 카테고리의 다른 글
[백준] Moo 게임, [백준] 샤워실 바닥 깔기 (0) | 2023.01.31 |
---|---|
[백준] 놀이공원 (0) | 2022.11.21 |
[백준]대표선수, [백준]입국심사 (0) | 2022.11.01 |
[프로그래머스]주차 요금 계산 (1) | 2022.10.15 |
[백준]겹치는 건 싫어, [백준]회전초밥 (0) | 2022.10.09 |
Comments