μ λ ₯
첫째 μ€μ μΉ΄λμ κ°μ N(3 ≤ N ≤ 100)κ³Ό M(10 ≤ M ≤ 300,000)μ΄ μ£Όμ΄μ§λ€. λμ§Έ μ€μλ μΉ΄λμ μ°μ¬ μλ μκ° μ£Όμ΄μ§λ©°, μ΄ κ°μ 100,000μ λμ§ μλ μμ μ μμ΄λ€.
ν©μ΄ Mμ λμ§ μλ μΉ΄λ 3μ₯μ μ°Ύμ μ μλ κ²½μ°λ§ μ λ ₯μΌλ‘ μ£Όμ΄μ§λ€.
μΆλ ₯
첫째 μ€μ Mμ λμ§ μμΌλ©΄μ Mμ μ΅λν κ°κΉμ΄ μΉ΄λ 3μ₯μ ν©μ μΆλ ₯νλ€.
ν΄κ²° λ°©λ²
λͺ¨λ κ²½μ°λ₯Ό νμνλ κ²μ΄ λΈλ£¨νΈ ν¬μ€μ λ°©λ²μ΄λ€.
μ£Όμ΄μ§ μΉ΄λμ λͺ¨λ κ²½μ°μ μλ₯Ό λν΄μ Mμ λμ§ μλ κ°μ₯ ν° μλ₯Ό μΆλ ₯νλ€.
ν΄κ²° κ³Όμ
μ¬μ€ λͺλ¬ μ μ νμ΄λ΄€λ λ¬Έμ μλ€. μ΄λ²μ λΈλ‘κ·Έλ₯Ό μ΄μνκ² λλ©΄μ λΈλ£¨νΈ ν¬μ€λΆν° λ€μ νλ² νμ΄λ΄€λ€.
3κ°μ λ°λ³΅λ¬Έμ μ΄μ©νμ¬ ν΄κ²°νλ €κ³ νλ€.
def main():
n, m = map(int, input().split())
card = list(map(int, input().split()))
sum_list = []
for i in range(n):
for j in range(i, n):
for k in range(j, n):
result = card[i] + card[j] + card[k]
if result < m:
sum_list.append(result)
print(max(sum_list))
if __name__ == "__main__":
main()
μ°μ μ²μ μλνλ μ½λ
3κ°μ μΉ΄λλ₯Ό λν κ°μ΄ mλ³΄λ€ μμΌλ©΄ sum_listμ μ μ₯νκ³ μ΅μ’ μ μΌλ‘ μ΄ κ° μ€ μ μΌ ν° κ°μ μΆλ ₯νκ² λ§λ€μλ€.
νμ§λ§
γ γ γ γ ... μ λ§ λ¨μν λ¬Έμ μλλ° "νλ Έμ΅λλ€"κ° λμμ μ΄μ§ λΉν©νλ€.
κ³°κ³°ν μκ°ν΄λ΄€λλ λ°λ³΅λ¬Έμ λ²μμ λ¬Έμ κ° μμλ€.
λ΄κ° μ§ μ½λλ μ€λ³΅ μ νμ΄ κ°λ₯ν μΉ΄λ μ ν.
νμ§λ§ λ¬Έμ μμ μꡬνλ 건 μ€λ³΅ μ νμ΄ λΆκ°λ₯ν μΉ΄λ μ ν.
λ°λΌμ μ½λμ λ²μλ₯Ό λ€μ λ°λ‘ μ‘μ μ£Όμλ€.
μΆκ°μ μΌλ‘ λΆνμνκ² λ¦¬μ€νΈλ₯Ό νμνλ κ³Όμ μ λ£μ κ² κ°μμ μμ ν΄μ€¬λ€.
def main():
n, m = map(int, input().split())
card = list(map(int, input().split()))
result = 0
for i in range(n-2):
for j in range(i+1, n-1):
for k in range(j+1, n):
three = card[i] + card[j] + card[k]
if result < three and three < m:
result = three
print(result)
if __name__ == "__main__":
main()
κΈ°μ‘΄μ λ°©λ²μΈ mλ³΄λ€ μμΌλ©΄ 리μ€νΈμ λ£κ³ μ΅μ’ μ μΌλ‘ νμνλ λ°©λ²μ΄ μλ κ·Έλ κ·Έλ μ΅λκ°μΌλ‘ κ°±μ ν΄μ£Όλλ‘ μ½λλ₯Ό λ³κ²½νλ€.
νμ§λ§...?
λ νλ Έμ΅λλ€μλ€...γ γ γ γ
μ΄λ²μλ λ²μμ λ¬Έμ μλ€. μ΅λκ°μ κ°±μ ν΄μ£Όλ κ³Όμ μμ μΉ΄λ 3κ°μ ν©μ΄ mλ³΄λ€ μμ λλ‘ κ΅¬νν κ²μ΄μλ€.
μ΄ λΆλΆμ μμ νμκ³
ν΅κ³Όν μ μμλ€.
μ΅μ’ μ½λλ
def main():
n, m = map(int, input().split())
card = list(map(int, input().split()))
result = 0
for i in range(n-2):
for j in range(i+1, n-1):
for k in range(j+1, n):
three = card[i] + card[j] + card[k]
if result < three and three <= m:
result = three
print(result)
if __name__ == "__main__":
main()
+ μΆκ°λ‘ λͺλ¬ μ μ νμλ μ½λλ₯Ό μ΄ν΄λ΄€λ€.
from itertools import combinations
import sys
new_list = []
card, max_sum = map(int, input().split())
card_list = list(map(int, sys.stdin.readline().split()))
combi = combinations(card_list,3)
combi = list(combi)
check = 0
for i in range(len(combi)):
if sum(combi[i]) == max_sum:
print(sum(combi[i]))
check += 1
break
else:
if sum(combi[i]) < max_sum:
new_list.append(sum(combi[i]))
if check != 1:
print(max(new_list))
λ΄μ₯ν¨μλ₯Ό μ¬μ©νμλ€.
combinationsλ₯Ό μ¬μ©νμ¬ λͺ¨λ μ‘°ν©μ κ²½μ°μ μλ₯Ό μ°Ύμλ΄κ³ μ΄λ₯Ό 리μ€νΈν νμλ€. (리μ€νΈμλ κ° μ‘°ν©μ΄ λ΄κ²¨μλ€.)
μ΄ν λ°λ³΅λ¬Έμ ν΅νμ¬ λ¦¬μ€νΈμ λͺ¨λ μ‘°ν©μ ν©μ κ³μ°νκ³ μ΄ κ°μ΄ mκ³Ό κ°μΌλ©΄ λ°λ³΅λ¬Έμ μ’ λ£νλ€.
κ·Έλ μ§ μμ κ²½μ°μλ μλ‘μ΄ λ¦¬μ€νΈμ μ‘°ν©μ ν©μ λ£μ΄μ€¬λ€. (μ§μ§ λΆνμν κ³Όμ μ΄ λ무 λ§μλ€...)
μ΄ν μλ‘μ΄ λ¦¬μ€νΈμμ μ΅λκ°μ μΆλ ₯... γ γ γ γ
μ΄λ²μ μ§ μ½λλ μκ°μ 2λ°° λκ² μ°¨μ΄κ° λλλ°λ μ΄μ κ° μμλ€.
μ§λ μ½λλ₯Ό λ³΄κ³ λ¬Έλ μκ°λ κ²μ΄ μλλ°
μ΄λ²μ μ§ μ½λμ λ©λͺ¨λ¦¬ μ¬μ©λμ λ μ€μΌ μ μκ² κ΅¬λλ μκ°μ΄ λ€μλ€.
1. sys.stdin.readline()μ μ¬μ©νκ³
2. μ΅λκ°μΌλ‘ κ°±μ ν΄μ£Όλ κ³Όμ μμ result == mμ΄ λλ©΄ λ°λ³΅λ¬Έμ νμΆνλλ‘ κ΅¬ννλ κ²μ΄λ€. κ·Έ μ΄νμ νμμ μλ―Έκ° μκΈ° λλ¬Έμ΄λ€.
μλ¬΄νΌ μ¬κΈ°κΉμ§.
'βοΈ μ½ν μ€λΉ > Brute Force' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[λΈλ£¨νΈ ν¬μ€ / Python] BOJ 1436 - μνκ°λ μ (0) | 2021.01.11 |
---|---|
[λΈλ£¨νΈ ν¬μ€ / Python] BOJ 1018 - 체μ€ν λ€μ μΉ νκΈ° (0) | 2021.01.11 |
[λΈλ£¨νΈ ν¬μ€ / Python] BOJ 2231 - λΆν΄ν© (0) | 2021.01.11 |
[λΈλ£¨νΈ ν¬μ€ / Python] BOJ 7568 - λ©μΉ (0) | 2020.12.21 |