Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 따라하며 배우는 C언어
- Cleancode
- graph
- Python
- greedy
- 생활코딩
- C
- Algorithm
- web
- 따배씨
- 백준
- 정수론
- Algospot
- BOJ
- server
- 따라하면서 배우는 C언어
- php
- programmers
- BASIC
- udemy
- DP
- BFS
- String
- JavaScript
- Math
- sorting
- 인프런
- C언어
- 종만북
- dfs
Archives
- Today
- Total
몽상실현개발주의
[종만북] POTION / solution 직관적인 알고리즘 / Python 파이썬 본문
https://www.algospot.com/judge/problem/read/POTION#
[종만북] POTION / solution 직관적인 알고리즘 / Python 파이썬
Solution
직관적인 알고리즘
- 비율이 맞을 때까지 재료들을 계속 더 넣어보는 방법
1. 첫번째 재료는 4숟가락을 넣어야 하는데, 7 숟가락을 넣음
-> 다른 재료들도 최소 7/4 배 넣어야 함
2. 두번째 재료는 6 x ( 7/4 ) = 10.5 숟가락 넣어야 하는데 올림하여 11 숟가락 넣음
-> 다른 재료들도 11/6 배 넣어야 함
3. 다시 첫번째 재료는 4 x ( 11/6 ) = 7.33... 숟가락을 넣어야 하는데 올림하여 8 숟가락 넣음
-> 다른 재료들도 ( 8/2 ) = 2 배 넣어야 함
c = int(input())
def solveSimulation(r_list, p_list, n):
ret = [0] * n
for i in range(n):
ret[i] = max(r_list[i] - p_list[i], 0)
p_list[i] += ret[i]
while True:
flag = 1
for i in range(n):
for j in range(n):
# i 번 재료 기준, 모든 재료는 ( p_list[i] / r_list[i] = X ) 배 이상 넣어야 한다.
# 따라서 p_list[j] 는 r_list[i] * X 이상의 정수가 되어야 한다.
# 첫번째 기준 X.소수.. 배 숟가락 이면, X 배를 만들어 주어야함
# X >= 1
require = (p_list[i] * r_list[j] + r_list[i] - 1) // r_list[i]
if require > p_list[j]:
ret[j] += require - p_list[j]
p_list[j] = require
flag = 0
if flag:
break
return ret
for _ in range(c):
n = int(input())
# 필요한 재료 양
r_list = list(map(int, input().split()))
# 넣은 양
p_list = list(map(int, input().split()))
answer = solveSimulation(r_list, p_list, n)
print(" ".join(map(str, answer)))
'Language > Algorithm' 카테고리의 다른 글
[종만북] 모듈라 연산 / 정수론 (0) | 2021.10.09 |
---|---|
[종만북] POTION / solution 효율적인 알고리즘 / Python 파이썬 (0) | 2021.10.09 |
[종만북] 두 수의 최대공약수 구하기 / 정수론 / Python 파이썬 (0) | 2021.10.04 |
[종만북] 약수의 개수 구하기 / 정수론 / Python 파이썬 (0) | 2021.09.22 |
[종만북] 빠른 소인수 분해 (에라토스테네스의 체 사용) / 정수론 / Python 파이썬 (0) | 2021.09.22 |
Comments