42번 영상_2 : 중복 아이템(숫자)를 제거하는 프로그램을 만들자
numbers = [2, 22, 7, 8, 9, 2, 7, 3, 5, 2, 7, 1, 3]
print(numbers)
idx = 0
while True:
if idx >= len(numbers):
break
else:
if numbers.count(numbers[idx]) >= 2:
numbers.remove(numbers[idx])
continue #while문 제일 앞으로 이동
#앞선 인덱스가 삭제되면 뒷 인수가 앞으로 이동하니 idx를 +1 할 필요없음
idx += 1
print(f'중복된 아이템 제거 후 :{numbers}')
[Output]
43번 영상 : 4개 숫자 중 서로 다른 숫자 2개를 선택해서 만들 수 있는 모든 경우의 수
( 오류플이 )
numbers = [4, 6, 7, 9]
prob = [] #경우의 수를 담을 리스트
for n in numbers:
for m in numbers:
if n == m:
break #이렇게 되면 n[0]인 4는 시작부터 브레이크가 걸리는데, 이 때 돌아가는 게 아닌 m의 for문이 끝나버림
else:
prob.append([n, m])
continue
print(prob)
print(len(prob))
[Output]
[[6, 4], [7, 4], [7, 6], [9, 4], [9, 6], [9, 7]]
6
.
.
( 수 정 )
numbers = [4, 6, 7, 9]
prob = [] #경우의 수를 담을 리스트
for n in numbers:
for m in numbers:
if n == m:
continue
prob.append([n, m])
print(prob)
print(len(prob))
[Output]
[[4, 6], [4, 7], [4, 9], [6, 4], [6, 7], [6, 9], [7, 4], [7, 6], [7, 9], [9, 4], [9, 6], [9, 7]]
12
.
.
( 경우의 수를 구하는 공삭을 이용한 풀이 )
# 순열을 구하는 공식 : n! / (n-r)!
import math
per = math.factorial(len(numbers)) / math.factorial(len(numbers) - 2)
4개 중 3개의 서로다른 숫자를 선택한 경우의 수
numbers = [4, 6, 7, 9]
prob = [] #경우의 수를 담을 리스트
for n in numbers:
for m in numbers:
if n == m:
continue
for l in numbers:
if n == m or m == l:
continue
prob.append([n, m, l])
print(prob)
print(len(prob))