728x90
브루트 포스 : 모든 방법을 한번씩 시도해보는 알고리즘 O(방법의 개수 * 시도하는 복잡도)
- 문제의 가능한 경우의 수를 계산해본다.
- 가능한 모든 방법을 다 만들어본다. > 그냥 다 해보는 방법, for문, 순열, 재귀 호출 사용, 비트마스크 사용
- 각각의 방법을 이용해 답을 구해본다.
Problem)
https://www.acmicpc.net/problem/2309
2309번: 일곱 난쟁이
아홉 개의 줄에 걸쳐 난쟁이들의 키가 주어진다. 주어지는 키는 100을 넘지 않는 자연수이며, 아홉 난쟁이의 키는 모두 다르며, 가능한 정답이 여러 가지인 경우에는 아무거나 출력한다.
www.acmicpc.net
Solution)
- 난쟁이의 키는 변하지 않는다는 조건을 이용한다.
- 모든 키의 합 sum을 구한다.
- 7난장이의 키에 포함되지 않는 것을 i,j로 설정하여 sum에서 뺀다.
위 방법으로 접근한다면 O(N^2)으로 문제를 해결할 수 있다.
Answer)
import sys
n = 9
a = [int(input()) for _ in range(n)]
a.sort()
total = sum(a)
for i in range(0, n):
for j in range(i+1, n):
if total - a[i] - a[j] == 100:
for k in range(0, n):
if i == k or j == k:
continue
print(a[k])
sys.exit(0)
728x90
'코딩테스트' 카테고리의 다른 글
브루드 포스 - 백준 1107 [Python] (0) | 2021.07.28 |
---|---|
브루드 포스 - 백준 1476 [Python] (0) | 2021.07.28 |
골드바흐의 추측 - 백준 6588 [Python] (0) | 2021.07.16 |
소수 - 백준 1929 [Python] (0) | 2021.07.16 |
소수 - 백준 1978 [Python] (0) | 2021.07.16 |
댓글