문제
내 코드
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)
풀이
- for문을 사용하여 배열에 숫자 9개를 입력한다.
- while을 사용해 리스트 합이 될 때까지, while문을 사용해 랜덤으로 리스트에서 7개를 뽑아서 리스트 합을 구한다.
- 리스트를 정렬하고, 차례대로 출력한다.
효율적인 코드
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로 랜덤으로 뽑을 수 있다.