[백준, 파이썬] 일곱 난쟁이, Brute Force

YuJangHoon·2022년 3월 6일
0
post-thumbnail

💡 문제 해결 아이디어

내가 생각한 아이디어

  • 이중 반복문을 이용한 풀이
  • 단순히 9명 중의 2명을 제외하는 모든 경우의 수를 탐색하며 합계가 100이 되는 순간에 break
  1. 아홉 명의 키를 오름차순으로 정렬
  2. total = 9명의 키 총합
  3. flag = False
  4. for i in range(9):
    • for j in range(i+1,9):
      • 만약 (total - i번째 난쟁이의 키 - j번째 난쟁이의 키)가 100이면
        • flag = True
        • break
    • if flag : break
  5. i, j번째 난쟁이를 remove
  6. 남은 난쟁이 리스트를 반복문 돌면서 print

💻 작성된 코드

ls = []
for _ in range(9):
    ls.append(int(input()))
    
# 키에 대해 오름차순으로 정렬
ls.sort()
# 전체 합
total = sum(ls)
# 100이 되는 경우를 찾았는지 여부
flag = False

# 모든 경우의 수 탐색
for i in range(9):
    for j in range(i+1, 9):
    	# 만약 i,j번째 난쟁이를 제외했을 때 총합이 100이면
        if (total - ls[i] - ls[j] == 100):
        	# 찾았다고 표시하고 반복문 탈출
            flag = True
            break
    # 찾아서 for문이 끝난거면 마찬가지로 탈출
    if flag:
        break
# i,j번째 난쟁이 제외 하고 출력
a, b = ls[i], ls[j]
ls.remove(a)
ls.remove(b)
for i in ls:
    print(i)
profile
HYU DataScience, ML Engineer - 산업기능요원(4급)

0개의 댓글