[백준] Brute Force

ddalkigum·2020년 11월 10일
2

알고리즘

목록 보기
6/15
post-thumbnail

백준 2798 블랙잭

풀이

N, M = map(int, input().split())
arr = list(map(int, input().split()))

result = 0
for i in range(N):
    for j in range(i + 1, N):
        for k in range(j + 1, N):
            if arr[i] + arr[j] + arr[k] > M:
                continue
            else:
                result = max(result, arr[i] + arr[j] + arr[k])
print(result)

세장을 뽑아서 더하는 모든 경우의 수를 다 계산하는 방식이다.
브루트 포스 알고리즘 자체가 이런식으로 진행되기 때문에, 굉장히 안정적인 알고리즘이다.
한장씩 뽑고, 세장을 뽑아서 합한 수가 M보다 클 경우는 continue 처리를 해주고,
작을 경우 python 함수인 max를 이용해 가장 큰값을 남기는 것으로 마무리해준다.


백준 2231 분해합

풀이

N = int(input())

con = list(map(int, str(N)))
print(N + sum(con))

생성자와 각 자릿수를 합하는 방법

N = int(input())
result = 0

for i in range(1, N):
    con = list(map(int, str(i)))
    sum_number = i + sum(con)
    if sum_number == N:
        result = i
        break
print(result)

블랙잭에서 했던 것과 마찬가지로, 모든 경우의 수를 다 더해주는 알고리즘이다.

블랙 잭을 풀고나서 푸니까 좀 더 이해가 쉬웠음

혹시나 너무 무식하게 풀이하는 건가 싶어서 다른 방법이 있나 찾아봤는데

다 이렇게 푸는 듯하다.


백준 7568 덩치

풀이

내 풀이

N = int(input())
arr = []
result = []

for i in range(N):
    h, w = list(map(int, input().split()))
    arr.insert(i, [h, w])

for i in range(len(arr)):
    rank = len(arr)
    for j in range(len(arr)):
        if arr[i][0] > arr[j][0] or arr[i][1] > arr[j][1]:
            rank -= 1
    result.append(rank)

for k in range(len(result)):
    print(result[k], end=" ")

다른 풀이

맞게 한 것 같은데 바꿔도 정답으로 안나오길래 다른 풀이를 찾아 봤다.

t = int(input())
a = []
for i in range(t):
    a.append(input().split())
a_len = len(a)
seq = []
for i in range(a_len):
    cnt = 1
    for j in range(a_len):
        if a[i][0] < a[j][0] and a[i][1] < a[j][1]:
            cnt += 1
    seq.append(cnt)
for i in seq:
    print(i, end=' ')

Brute Force

모든 영역을 탐색하는 알고리즘이다.
정확도는 100%이며, 자원만 충분하다면 가장 무서운 알고리즘이다.
주로 암호학에서 사용됨.

종류

선형 구조를 전체적으로 탐색하는 순차 탐색(Sequential Search)
비선형 구조를 전체적으로 탐색하는 깊이 우선 탐색(DFS, Depth First Search)
너비 우선 탐색(BFS, Breadth First Search)이 가장 기본적인 도구이다.

수학은 근성이다

profile
딸기검 -본캐🐒 , 김준형 - 현실 본캐 🐒

0개의 댓글