-
Notifications
You must be signed in to change notification settings - Fork 5
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. Weβll occasionally send you account related emails.
Already on GitHub? Sign in to your account
21-Hwangyerin #92
21-Hwangyerin #92
Conversation
λ¬Έμ λ§λ€ λ€λ₯΄κΈ΄ νλ°, 보ν΅μ λ¨μΌκ°μ΄ int λ²μλ₯Ό λ²μ΄λμ§ μκ²μ£ΌλλΌκ΅¬μ. μ΄ λ¬Έμ λ μ¬μ€μ λͺ¨λ μ‘°ν©μ νμΈν΄λ³΄λ κ²μ΄λ, νμ΄μ¬ itertools λΌμ΄λΈλ¬λ¦¬μ combinations ν¨μλ₯Ό μ΄μ©νλ©΄ κ°νΈνκ² λ΅μ ꡬν μ μλ΅λλ€. from itertools import combinations
input = open(0).readline
N = int(input())
ingredients = [tuple(map(int, input().split())) for _ in range(N)]
ans = 10**9
for i in range(1, N + 1):
for comb in combinations(ingredients, i): # ingredients μμ μ€μ iκ°λ₯Ό 골λΌλ³Έλ€
total_sour, total_bitter = 1, 0
for sour, bitter, in comb: # μ΄ μ‘°ν©μ μν μ¬λ£λ€μ μ λ§, μ΄λ§μ νμΈνλ€
total_sour *= sour
total_bitter += bitter
ans = min(ans, abs(total_sour - total_bitter))
print(ans) |
ν |
def recur(idx,sour, bitter, use): | ||
global answer | ||
|
||
if idx == N: | ||
if use == 0: | ||
return | ||
# μ λ§ μ΄λ§μ μ°¨μ΄(μ λκ°) | ||
result = abs(sour-bitter) | ||
# μ λ§κ³Ό μ΄λ§μ μ°¨μ΄κ° κ°μ₯ μμ μ리μ μ°¨μ΄ | ||
answer = min(answer,result) | ||
print(result) | ||
return | ||
#μ¬λ£λ₯Ό μ¬μ©νλ κ²½μ° | ||
recur(idx+1, sour*ingredient[idx][0], bitter+ingredient[idx][1],use+1) | ||
#μ¬λ£λ₯Ό μ¬μ©νμ§ μλ κ²½μ° | ||
recur(idx+1 ,sour,bitter,use) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
μ΄ λ¬Έμ λ₯Ό μ λ νμ΄λ³΄μμ΅λλ€ !
μ¬λ£μ κ°μκ° μ ν΄μ§μ§ μκ³ , 1κ°λΆν° nκ°κΉμ§ λͺ¨λ κ²½μ°μ μλ₯Ό λ€ λ΄μΌ νλ€λ μ μμ λΈλ£¨νΈν¬μ€λ‘ ν΄λ³Ό μ μκ² λ€λ μκ°μ νμ΅λλ€!
λ°λΌμ combinationsλ₯Ό μ¬μ©ν΄ 1λΆν° Nκ° μ ννλ κ²½μ°λ€μ 리μ€νΈμ λ΄μμ£Όμμ΅λλ€ !
combinationsμ λν΄ 1κ° μ ννλ κ²½μ°, ... Nκ° μ ννλ κ²½μ°λ₯Ό μ λΆ κ³ λ €νλλ‘ μ½λλ₯Ό μμ±ν΄λ³Ό μλ μμ΅λλ€!
from itertools import combinations
for combis in [combinations(ingredient,i) for i in range(1,N+1)]:
for combi in combis:
S_result,B_result=1,0 # μ λ§, μ΄λ§ μ΄κΈ°ν
for s, b in combi: # κ° μ‘°ν© λ°λ³΅
S_result*=s
B_result+=b # μ λ§μ κ³±νκ³ , μ΄λ§μ λν¨
result=min(result, abs(S_result-B_result)) # μ΅μ κ°±μ
print(result)
κ° μ‘°ν©μ λν΄ μ λ§κ³Ό μ΄λ§μ μ΄κΈ°ν νκ³ , μ λ§μ κ³±νκ³ , μ΄λ§μ λν΄μ£Όλ κ²μ λ°λ³΅νλ€ ν΄λΉ μ‘°ν©μ μ¬λ£μ λν΄ μ λ§κ³Ό μ΄λ§μ μ°¨μ΄μ μ λκ°μ ꡬν΄μ€¬μ΅λλ€!
ALM λ€μ μλ κ±°λ μ€ .... πππππ λΉ μ΄ν μ λλ€
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
μ λ μ μλμ²λΌ μ¬λ£μ μκ° μ κΈ° λλ¬Έμ λΈλ£¨νΈ ν¬μ€λ‘ νμ΄λ μΆ©λΆν κ°λ₯ν λ¬Έμ λΌκ³ μκ°ν΄μ 1λΆν° NκΉμ§ μ‘°ν©μΌλ‘ λͺ¨λ κ²½μ°λ₯Ό μμλ΄κ³ λ λ€μ, κ²°κ³Όλ₯Ό μ
λ°μ΄νΈνμμ΅λλ€!
κ΅ν©λ λλΆμ float('inf')
λΌλ μ΅λκ°λ μλ€λ κ²μ μμκ°λ€μπ§ λ€μλΆν° μ΅λκ°μ μ¬μ©ν λ νλ² μ¬μ©ν΄λ³΄μμΌκ² μ΅λλ€π
λ€μ PRλ νν μ λλΉ!π
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
μ€! μ λ§μ 0μΌλ‘ μμνλ©΄ λλ₯Ό κ³±ν΄λ 0μ΄λ 1λ‘ μμν΄μΌνλκ΅°μ :-D μ¬κ·λ₯Ό μ¬μ©νκ±°λ collectionsλ‘λ ν μ μλ€λ κ²μ μμκ°λλ€. μ λ μ΅λκ°μ΄ νμν λ 999999 μ΄λ° μμΌλ‘ νμλλ° float('inf')κ° μλ€λ κ²λ μμκ°λλ€!
μ΄λ²μ°¨μ PR μκ³ λ§μΌμ ¨μ΅λλ· ππ»β¨ ππ»
π λ¬Έμ λ§ν¬
Baekjoon | λμμ΄κ° λ§λ λ§μλ μμ
μ§κΈ λμμ΄μ μμλ μ¬λ£κ° Nκ° μλ€. λμμ΄λ κ° μ¬λ£μ μ λ§ Sμ μ΄λ§ Bλ₯Ό μκ³ μλ€. μ¬λ¬ μ¬λ£λ₯Ό μ΄μ©ν΄μ μ리ν λ, κ·Έ μμμ μ λ§μ μ¬μ©ν μ¬λ£μ μ λ§μ κ³±μ΄κ³ , μ΄λ§μ ν©μ΄λ€.
μκ±°λ μ΄ μμμ μ’μνλ μ¬λμ λ§μ§ μλ€. λμμ΄λ μ¬λ£λ₯Ό μ μ ν μμ΄μ μ리μ μ λ§κ³Ό μ΄λ§μ μ°¨μ΄λ₯Ό μκ² λ§λ€λ €κ³ νλ€. λ, λ¬Όμ μ리λΌκ³ ν μλ μκΈ° λλ¬Έμ, μ¬λ£λ μ μ΄λ νλ μ¬μ©ν΄μΌ νλ€.
μ¬λ£μ μ λ§κ³Ό μ΄λ§μ΄ μ£Όμ΄μ‘μ λ, μ λ§κ³Ό μ΄λ§μ μ°¨μ΄κ° κ°μ₯ μμ μ리λ₯Ό λ§λλ νλ‘κ·Έλ¨μ μμ±νμμ€.
μ λ ₯
첫째 μ€μ μ¬λ£μ κ°μ N(1 β€ N β€ 10)μ΄ μ£Όμ΄μ§λ€. λ€μ Nκ° μ€μλ κ·Έ μ¬λ£μ μ λ§κ³Ό μ΄λ§μ΄ 곡백μΌλ‘ ꡬλΆλμ΄ μ£Όμ΄μ§λ€. λͺ¨λ μ¬λ£λ₯Ό μ¬μ©ν΄μ μ리λ₯Ό λ§λ€μμ λ, κ·Έ μ리μ μ λ§κ³Ό μ΄λ§μ λͺ¨λ 1,000,000,000λ³΄λ€ μμ μμ μ μμ΄λ€.
μΆλ ₯
첫째 μ€μ μ λ§κ³Ό μ΄λ§μ μ°¨μ΄κ° κ°μ₯ μμ μ리μ μ°¨μ΄λ₯Ό μΆλ ₯νλ€.
βοΈ μμλ μκ°
2μκ°
β¨ μλ μ½λ
μ λ§κ³Ό μ΄λ§μ μ λκ° λνλλ Nκ°μ μ¬λ£λ€μ μΈλ±μ€λ₯Ό νμ©νκΈ° μν΄ 2μ°¨μ리μ€νΈλ‘ λ§λ€μ΄μ€¬λ€.
Note
κ° μ¬λ£μ μ λ§ S μ μ΄λ§ B
μ λ§μ μ¬μ©ν μ¬λ£μ μ λ§μ κ³±μ΄κ³ , μ΄λ§μ ν©
μ¬λ£λ μ μ΄λ νλ μ¬μ©
μ λ§κ³Ό μ΄λ§μ μ°¨μ΄κ° κ°μ₯ μμ μ리
μ°λ¦¬κ° ꡬν΄μΌ νλ 건 κ° μ λ§κ³Ό μ΄λ§μ μ°¨μ΄κ° κ°μ₯ μμ μ리μ΄λ€.
λ€μ κ·Έλ¦Όκ³Ό κ°μ΄ μ€λͺ ν μ μλ€. (κ·Έλ¦Όμ μ¬λ£κ° μΈκ°μ§μΈ κ²½μ°μ΄λ€.)
μ¬λ£λ₯Ό μ¬μ©ν κ²½μ°μ μ¬μ©νμ§ μμ κ²½μ° λ κ°μ§λ‘ λλλ€.
XXXμΈ κ²½μ°μλ λͺ¨λ μ¬λ£κ° μ¬μ©λμ§ μμ κ²½μ°μ΄λ€.
λΌκ³ λ¬Έμ μ λͺ μλμ΄μκΈ° λλ¬Έμ
return
ν΄μ€λ€.μ λ§κ³Ό μ΄λ§μ μ°¨μ΄λ₯Ό ꡬνκΈ° μν΄μλ abs() ν¨μλ₯Ό μ¬μ©νλ€.
(= μ λκ°)
μ¬λ£λ₯Ό μ¬μ©νλ κ²½μ°
sour(μ λ§)μλ νμ¬ μ¬λ£μ μ λ§μ κ³±νκ³ , bitter(μ΄λ§)μλ νμ¬ μ¬λ£μ μ΄λ§μ λνλ€. κ·Έλ¦¬κ³ μ¬λ£ μ¬μ©νμλ₯Ό 1μ¦κ° μν¨λ€.
μ¬λ£λ₯Ό μ¬μ©νμ§ μλ κ²½μ°
sour(μ λ§)μ bitter(μ΄λ§)λ₯Ό κ·Έλλ‘ μ μ§νκ³ , μ¬λ£ μ¬μ©νμλ μ¦κ°μν€μ§ μλλ€.
λ©μΈ μ½λμ ν¨μκ° recur(0,1,0,0) μΌλ‘ μμνλμ΄μ
μ°μ , recur(idx, sour, bitter, use) μμμ΄λ€.
sourκ° 1λ‘ μμνλ μ΄μ λ
μ΄κΈ° λλ¬Έμ΄λ€. 0μΌλ‘ μμμ νκ²λλ©΄ νμ¬ μ λ§μ κ³±ν΄λ κ³μ 0μΌλ‘ κ²°κ³Όκ° λμ¨λ€.
λ°λ©΄ μ΄λ§μ ν©μ΄κΈ° λλ¬Έμ μ΄κΈ°κ°μ 0μΌλ‘ μμνλ€.
μ΄κΈ° μ΅μκ°μ μ΅λν ν° κ°μΌλ‘ μ‘μλλλ€κ³ 999999999λ‘ ν΄λ¨λλ°
μ΄κΈ°κ°μ μ‘μ λλ μ£Όλ‘ μ΄λ€μμΌλ‘ μ΄κΈ°ννλμ?
π μλ‘κ² μκ²λ λ΄μ©
DFS/BFS, λ°±νΈλνΉ, νΈλ¦¬