타노스의 핑거 스냅

준표장·2022년 9월 7일

코딩도장 문제풀이

목록 보기
11/11


타노스는 프로그램의 균형을 위해서는 리스트의 원소 절반을 무작위로 삭제해야 한다고 믿고 있다.

타노스가 손가락을 튕겼을 때(프로그램을 실행했을 때) 입력된 리스트에서 절반의 원소를 무작위로 삭제하여 리턴하는 인피니티 건틀렛 프로그램을 작성하시오.

(무작위 삭제이므로 입력값이 같아도 출력값이 매번 달라야 합니다)

입력 예시

[2, 3, 1, 6, 5, 7]

출력 예시 1

[2, 5, 7]

출력 예시 2

[3, 6, 5]

참고: 리스트의 원소가 홀수개일 경우 절반의 확률로 절반보다 많은 원소가 삭제되거나 절반보다 적은 원소가 삭제되어야 합니다.

(만약 리스트의 원소가 7개라면 절반의 확률로 3개 또는 4개의 원소가 삭제됨)

내가 작성한 코드

import random
a= [1, 6, 5, 7, 5, 3, 20]
# a = list(map(int, input().split()))
length = len(a)
if length%2 == 1:
    length = int((int(length) + random.choice([-1,1]))/2)
else:
    length = int(int(length)/2)
for _ in range(length):
    del a[random.randint(0,length-1)]
print(a)
[6, 7, 3]
[7, 3, 20]
[6, 5, 3]
[1, 5, 20]

랜덤한 수를 받아 만약 길이가 홀수면 랜덤하게 1을 더하거나 빼서 2로 나눈다 이후 랜덤한 배열의 길이의 반만큼 for 문을 돌려 하나씩 삭제하고 출력한다.

profile
개발일지용 메모장

0개의 댓글