3.2 파이썬 자료구조 문제풀이2_list2

소리·2023년 9월 28일
0

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))
  • break의 정의를 알고 시기적절하게 쓸줄 알아야 함.

[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))
profile
데이터로 경로를 탐색합니다.

0개의 댓글