일곱난쟁이(백준 알고리즘)

파랑·2021년 11월 25일
0

코딩테스트

목록 보기
1/1

일곱난쟁이

주어지는 난쟁이가 9명으로 고정이고,
7명을 선택하여 키의 합이 100이 되면 되므로
9명의 난쟁이의 키를 모두 더하고,
반복문을 통해 두 난쟁이를 선택하여
전체 키의 합에서 두 난쟁이의 키를 뺀 값이 100인지 확인한다.
정답이 여러가지이면 아무거나 출력해도 괜찮으므로,
100을 확인한 경우 9명 중 선택한 두명을 제외한 난쟁이의 키를
순서대로 출력한다.


height_list = []
total = 0

for i in range(9):
    height_list.append(int(input()))

total = sum(height_list)

for p in range(8):
    for q in range(p + 1, 9):
        if((total - (height_list[p] + height_list[q])) == 100):
            rem_1 = height_list[p]
            rem_2 = height_list[q]

            height_list.remove(rem_1)
            height_list.remove(rem_2)

            height_list.sort()

            print(p, q)
            for k in range(7):
                print(height_list[k])
            break
    
    if(len(height_list) < 9):
        break

처음에 리스트가 삭제되면서 index가 바뀌는 점을 인지하지 못하고
height_list.remove(height_list[p])
height_list.remove(height_list[q]) 를 했다가 계속 오류가 나서
다시보니 remove가 다음 리스트에 remove 할때 영향을 주는것을 생각못했다.
그래서 변수에 저장해놓고 삭제시키는 방법을 사용해서 해결했다,,

0개의 댓글