Algorithm
[Algorithm👩🏼🏫] Brute-Force 알고리즘
NOHCODING
2022. 11. 21. 13:38
반응형
01. Brute Force란?
암호학에서는 Brute-Force Attack이 존재한다. 우리말로는 '무차별 대입 공격'이라는 것인데, 정말 무차별적으로 가능한 모든 방법을 다 시도하는 것을 뜻한다. 예를 들어, 3자리 수의 비밀번호가 있으면, 000부터 999까지 나올 수 있는 경우의 수는 모두 다 해보는 것이다.
02. Brute-Force 알고리즘의 장점은 뭘까?
Brute-Forece 알고리즘은 직관적이고 명확하다. 그래서 코드를 구현하기도 비교적 쉬운 편이다. 또한 모든 경우의 수를 하기 때문에 답을 확실하게 찾을 수 있다는 장점도 있다. 그러나 인풋이 크면 클 수록 비효율적이니, Brute-Force로 알고리즘을 한 번 생각해보고 해당 방법을 효율적으로 바꿀 알고리즘을 찾는 시작점이라고 할 수 있다.
03. Brute-Force 알고리즘의 단점은 뭘까?
모든 것을 다 실행해서, 비효율에 대한 대가는 인풋이 커질수록 심각해진다. 따라서 인풋이 큰 문제의 경우 다른 알고리즘을 적용하는 것이 좋다.
04. Brute-Force로 문제를 풀어보자
def max_product(left_cards, right_cards):
# 코드를 작성하세요.
# 테스트
print(max_product([1, 6, 5], [4, 2, 3]))
print(max_product([1, -9, 3, 4], [2, 8, 3, 1]))
print(max_product([-1, -7, 3], [-4, 3, 6]))
def max_product(left_cards, right_cards):
max = 0;
for left_card in left_cards:
for right_card in right_cards:
temp = left_card * right_card;
if temp > max:
max = temp;
return max;
# 테스트
print(max_product([1, 6, 5], [4, 2, 3]))
print(max_product([1, -9, 3, 4], [2, 8, 3, 1]))
print(max_product([-1, -7, 3], [-4, 3, 6]))
반응형