Algorithm/나머지 문제들

[Baekjoon 2309 / python / 브론즈1] 일곱 난쟁이

양선규 2024. 3. 23. 21:07
728x90
반응형
hobit = [] # 난쟁이 리스트

for _ in range(9): # 9명 입력받음
    hobit.append(int(input()))

kee = sum(hobit) # 9명 난쟁이 키의 합을 구해둔다
def hobit7(hobit):
    for i in range(len(hobit)-1): # 난쟁이 2명을 선택하는 모든 경우의 수 인덱스를 구해서 반복한다
        for j in range(len(hobit)):
            if j > i:
                if kee - (hobit[i] + hobit[j]) == 100:  # 난쟁이 2명을 뺀 키가 100 이라면 정답
                    a = hobit[i]
                    b = hobit[j]
                    hobit.remove(a) # 난쟁이 삭제
                    hobit.remove(b)
                    hobit.sort() # 정렬
                    for i in hobit: # 결과 출력
                        print(i)

                    return # 답을 찾으면 출력 후 함수 종료
                   
hobit7(hobit)

 

완전탐색 문제이다. 문제는 매우 간단해서 쉽게 풀 줄 알았는데 코드를 짤 때 뭔가 의외의 까다로움이 있었다.

 

풀이는 간단하다. 아홉 난쟁이 중 2명을 고르는 모든 경우의 수를 반복문을 이용해서 만든다.

그리고 아홉 난쟁이의 키를 모두 더한 값에서, 난쟁이 2명의 키를 뺐을 때 100이 나온다면 정답이다.

 

난쟁이 2명을 뺄 때, 첫번째 난쟁이를 빼면 인덱스가 바뀌므로 두번째 난쟁이를 뺄 때 문제가 생길 수 있다.

따라서 요소 값을 미리 변수에 저장해둔 후, 값으로 지정해서 빼면 된다.

728x90
반응형