728x90
1. 문제
2. 해결
- 완전탐색 (Brute-Force)를 사용하여 풀었다.
- 우선 아홉난쟁이 중 합이 100인 난쟁이 7명을 찾아야하는데 7명을 찾기보다는 아닌 2명을 제외하는 것이 더 간단해보인다.
- (전체 합 - 아닌 두명의 숫자 합)을 통해서 구할 수 있다.
- 나머지 2명이 중복되지 않게 2중 for 문을 사용해주었다. (아래에 예시 코드를 작성하였다)
- 완전탐색을 하며 i,j를 찾아도 9C2 = 36으로 충분히 작은 수가 나오므로 완전 탐색을 사용해도 된다 !!
for i in range(4):
for j in range(i+1,4):
print(i,j)
3. 코드
dwarfs = [int(input()) for _ in range(9)]
sum_dwarfs = sum(dwarfs)
# print(sum_dwarfs)
for i in range(9):
for j in range(i+1,9):
if sum_dwarfs - dwarfs[i] - dwarfs[j] == 100:
### 배열에서 삭제가 어려울 땐 그냥 바로 정답 출력해버리기
for k in range(9):
if k not in [i,j]:
print(dwarfs[k])
어렵지 않은 완전탐색 문제였다. 다만 처음 한 생각은 dwarfs배열에서 del을 사용하여 i,j 인덱스를 삭제하려고 했는데 계속 오류가 떠서 바로 답을 출력하도록 하였다. 이렇게 코테를 칠 때 내가 안되는 부분이 있다면 얼른 다른 방법을 찾는것이 중요할 것 같다..
'[알고리즘] > BOJ' 카테고리의 다른 글
[백준/Python]15624번: 피보나치 수 7 (DP) (0) | 2023.03.19 |
---|---|
[백준/Python] 1010번: 다리놓기 (조합) (0) | 2023.03.07 |
[백준/Python] 1436번: 영화감독 숌 (완전 탐색) (0) | 2023.03.05 |
[백준/Python] 18870번: 좌표 압축 (1) | 2023.03.01 |
[백준/Python] 7568번: 덩치 (BruteForce) (0) | 2023.02.28 |