[5/24] 2309 (일곱 난쟁이)

이경준·2021년 5월 24일
0

코테

목록 보기
11/140
post-custom-banner

문제

내 코드

import random

arr = []
for _ in range(9):
    arr.append(int(input()))
    
ssum = 0
while (ssum != 100):
    newlist = []
    while (len(newlist) != 7):
        key = random.choice(arr)
        if (key not in newlist):
            newlist.append(key)
    ssum = sum(newlist)

newlist.sort()
for i in newlist:
    print(i)

풀이

  1. for문을 사용하여 배열에 숫자 9개를 입력한다.
  2. while을 사용해 리스트 합이 될 때까지, while문을 사용해 랜덤으로 리스트에서 7개를 뽑아서 리스트 합을 구한다.
  3. 리스트를 정렬하고, 차례대로 출력한다.

효율적인 코드

import random

arr = [20,7,23,19,10,15,25,8,13]

arr.sort()
result = sum(arr)

flag = True
for i in range(9):
    for j in range(i+1, 9):
        if (result - arr[i] - arr[j] == 100):
            del arr[i]
            del arr[j-1]
            flag = False
            break
    if flag == False:
        break

for i in arr:
    print(i)
  • 더 효율적인지는 잘 모르겠다.

피드백

  • 이중 for문을 사용해서, 합에서 2개를 빼면 100이 되는 것을 찾아서 리스트에서 삭제한다.
  • 이중 for문에서 벗어나려면 저렇게 break를 두개 사용해서 빠져나가야 한다.

배운 것

  • random 라이브러리를 가져와서 random.choice로 랜덤으로 뽑을 수 있다.
profile
The Show Must Go On
post-custom-banner

0개의 댓글