출처 : 반크_독도2023
문제]
아래의 조건에 맞는 프로그램을 작성하시오.
조건]
1. 임의의 3자리수 N개를 무작위로 산출하시오.(3<=N<=100)
2. 임의의 수는 중복되지 않게 산출하시오.
3. 병합정렬을 사용하여 오름차순으로 정렬하시오.
4. 정렬 전 값과 정렬 후 값을 출력하시오.
5. 한라인에 10개씩 출력하시오.
6. 기타사항은 프로그램의 전반적인 로직과 사용 프로그램의 특성을 고려하여
프로그램을 작성하시오.
입력 예)
3
출력 예)
병합 정렬 전]
111 555 333
병합 정렬 후]
111 333 555
참고풀이]
import random
#리스트에 있는 데이터를 오름차순 정렬합니다.
def MergeSort(list):
if len(list)>1:
mid=len(list)//2
left=list[:mid]
right=list[mid:]
#나뉜 부분의 크기가 1이될 때까지 재귀호출로 반복한다.
MergeSort(left)
MergeSort(right)
#병합 처리하기
a=b=c=0
while a<len(left) and b<len(right):
if left[a]<right[b]:
list[c]=left[a]
a+=1
else:
list[c]=right[b]
b+=1
c+=1
while a<len(left):
list[c]=left[a]
a+=1
c+=1
while b<len(right):
list[c]=right[b]
b+=1
c+=1
return list
#100~999 사이의 임의의 수 N개를 입력받는다.
data = []
N=int(input())
if 3<=N<=100:
for i in range(20):
n=random.randint(100,999)
if n not in data:
data.append(n)
print("병합 정렬 전]")
for i in range(20):
if(i+1)%10 != 0:
print(data[i],end=" ")
else:
print(data[i])
print()
MergeSort(data)
print("병합 정렬 후]")
for i in range(20):
if(i+1)%10 != 0:
print(data[i],end=" ")
else:
print(data[i])
print()
참고풀이 결과]
대한민국의 아름다운 영토, 독도의 봄
'프로그램 > Python 1000제' 카테고리의 다른 글
Python 330제] 파이썬 EXPRESS CHAPTER 10. 도전문제 p474 (0) | 2024.11.11 |
---|---|
Python 328제] 버블정렬 (0) | 2024.10.31 |
Python 327제] 두근두근 파이썬(개정판) CHAPTER 13 연습문제 4 p397 (0) | 2024.10.28 |
Python 326제] 두근두근 파이썬(개정판) CHAPTER 12 도전문제 1 p377 (0) | 2024.10.21 |
Python 325제] 두근두근 파이썬(개정판) CHAPTER 11 연습문제 7 p361 (0) | 2024.10.19 |
댓글