본문 바로가기

[알고리즘]/[알고리즘 문제 풀기]

[완전탐색 알고리즘] #1 백준 일곱 난쟁이 (파이썬,2309번)

728x90

문제 링크

2309번: 일곱 난쟁이 (acmicpc.net)


알고리즘 설명

[알고리즘 공부] #1 완전 탐색, 브루트포스(Brute Force) 알고리즘 with Python (tistory.com)

 

[알고리즘 공부] #1 완전 탐색, 브루트포스(Brute Force) 알고리즘 with Python

완전 탐색 알고리즘(Brute Force)어떤 알고리즘일까?완전 탐색 알고리즘은 조건문이나 반복문을 통해 가능한 모든 경우의 수를 탐색하여 원하는 값을 구하는 알고리즘을 말한다. 알고리즘 설계의

juyear-coding.tistory.com


문제 설명

이 문제는 완전탐색 알고리즘을 이용하여 모든 경우의 수를 탐색하는 방식으로 풀었다.

 

먼저 9명의 난쟁이 중에서 7명의 난쟁이의 키를 더했을 때 조건을 만족시키면 된다.

9명에서 7명을 골라서 더하는 것보다 9명에서 2명을 골라 뺀 후 나머지를 더하는게 더 효율적이라고 판단해 2명을 고르는 코드로 제작했다.

 

이중 반복문을 이용해 중복되지 않는 2명의 제외한 후 7명의 키를 더했다.

 

완전탐색 알고리즘은 그저 모든 경우의 수를 탐색하는 알고리즘이기 때문에 코드를 작성하는데 어려움이 없었고 코드도 알아보기가 쉬워서 좋았다.


CODE 설명

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
height = []
for i in range(9):
    num = int(input())
    height.append(num)
 
check = False
 
for i in range(8):
    if check == True:
        break
    for j in range(i+1,9):
        if sum(height) - height[i] - height[j] == 100:
            check = True
            temp1 = height[i]
            temp2 = height[j]
            height.remove(temp1)
            height.remove(temp2)
            break
 
height.sort()
for i in height:
    print(i)
cs

먼저 height 리스트를 생성하여 9명의 키를 담아주었다.

그 후 이중 반복문을 이용하여 중복되지 않는 2명의 키를 빼는 코드를 작성했다.

7명의 키의 합이 조건에 나온 100cm를 만족한다면 결과를 출력하는 식으로 만들었다.


728x90