Q1. 리스트 ls = [10,5,20,7,9,31,12,11,19,32] 가 있다고 할 때, 각 요소에 가중치를 3씩 부여하여 오름차순으로 출력
(선택정렬 알고리즘 활용 / for문은 이중 for문 하나만 사용)
선택정렬 알고리즘(오름차순) : 맨 앞자리부터 n번째 수와 나머지를 비교하여 더 작은 수를 n번으로 옮기는 알고리즘
A.
1 2 3 4 5 6 7 8 9 10 11 | # ver.1 ls = [10,5,20,7,9,31,12,11,19,32] i,j =0,0 print('변경전 : ',ls) # 변경 전 리스트 출력 for i in range(len(ls)-1): # 리스트 마지막 요소 직전까지 반복 for j in range(i+1,len(ls)): if ls[i] > ls[j]: ls[i],ls[j]=ls[j],ls[i] #swap else: ls[i] = ls[i] + 3 # 정렬 후 요소 +3 else: ls[j] = ls[j] + 3 print('변경후 : ',ls) | cs |
1 2 3 4 5 6 7 8 9 10 11 12 13 | # ver.2 ls = [10,5,20,7,9,31,12,11,19,32] i,j = 0,0 print('변경전 : ',ls) for i in range(len(ls)-1): for j in range(i+1,len(ls)): if ls[i] > ls[j]: ls[i], ls[j] = ls[j], ls[i] ls = [i+j for i, j in zip([3]*len(ls),ls) ] # 3*len(ls)는 [3,3,3,3,3,3,3,3,3,3] 리스트가 생기는 것과 같다 # zip코드를 이용해 ls와 위 리스트를 짝지어서 각 요소별로 더하는 방식 print('변경후 : ',ls) | cs |
Q2 - 1. 리스트 ls에는 1~10까지의 정수를 저장하고, lsAdd에는 random 함수를 활용하여 임의의 수 10개를 저장
Q2 - 2. lsResult에 두 리스트를 차례로 삽입하고, 모든 요소를 오름차순으로 정렬 (sort 함수 활용)
Q2 - 3. lsResult 안에 중복되는 숫자와 중복 개수를 각각 출력
Q2 - 4. lsResult에서 중복되는 값을 한개만 남겨둔채 삭제하고 삭제한 결과 출력
A.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | import random ls = [] lsAdd = [] lsResult = [] count = 0 # 1 print("\n1. ------------------------------\n") for i in range(1, 11) : ls.append(i) lsAdd.append(random.randrange(1, 11)) # random.random()*10+1 도 가능 print("ls : ", ls) print("lsAdd : ", lsAdd) # 2 print("\n2. ------------------------------\n") lsResult.extend(ls) lsResult.extend(lsAdd) lsResult.sort() print("lsResult : ", lsResult) # 3 print("\n3. ------------------------------\n") print("lsResult 내부 숫자 개수 : ",len(lsResult)) print("중복되는 숫자와 개수 : ") for i in range(len(lsResult)) : count = lsResult.count(i) if count>1 : print("숫자 : ", i, "\t개수 : ",count) # 4 print("\n4. ------------------------------\n") for i in range(len(lsResult)) : count = lsResult.count(i) if count>1 : for j in range(1, count) : lsResult.remove(i) print("lsResult : ", lsResult) | cs |
Q3. 로또 번호 추첨기 : 1부터 45까지의 숫자를 중복 없이 7개 출력
A.
1 2 3 4 5 6 7 8 9 10 11 12 13 | import random lotto = [] num = 0 for i in range(6) : num = random.randrange(1, 46) while num in lotto : num = random.randrange(1, 46) lotto.append(num) print("\n=== 로또 추첨 ===") lotto.sort() # 정렬 print("추첨된 번호 : ", *lotto, end="\n\n") # *연산자는 리스트의 괄호를 해제 | cs |
'study > python' 카테고리의 다른 글
파이썬 딕셔너리(Dictionary) 예제 (0) | 2022.05.31 |
---|---|
파이썬 튜플(Tuple) 예제 (0) | 2022.05.31 |
파이썬 for문 , while문 (반복문) 예제 (0) | 2022.05.27 |
파이썬 for문 (반복문) 예제 (0) | 2022.05.26 |
파이썬 if~elif~else / match~case (switch~case) 조건문 예제 (0) | 2022.05.26 |
댓글