반응형
파이썬으로 백준풀기 :: 2751번 수 정렬하기 2
https://www.acmicpc.net/problem/2751
코드
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 | v = [int(input()) for i in range(int(input()))] # 입력 # merge sort def merge(left, right) : v=list() i=0;j=0 while(i<len(left) and j<len(right)) : if left[i]<=right[j] : v.append(left[i]) i+=1 else : v.append(right[j]) j+=1 if i==len(left) : v = v + right[j:len(right)] if j == len(right): v = v + left[i:len(left)] return v def merge_sort(v) : if len(v) <= 1 : return v m = len(v)//2 left = merge_sort(v[0:m]) right = merge_sort(v[m:len(v)]) return merge(left, right) m = merge_sort(v) print(*m, sep="\n") | cs |
이 문제는 2750번 수 정렬하기 와 달리 O(nlogn) 알고리즘으로 풀어야 한다.
즉, O(n^2) 인 삽입정렬, 버블정렬이 아닌 merge sort/ heap sort로 풀어야 한다.
여기서도 주의할 점은 똑같은 코드라도 python3 으로 제출하면 안되고 pypy3으로 제출해야한다.
python 기본 내장함수로는 다음과 같이 풀 수 있다.
이 역시 pypy3으로 제출해야 한다.
1 2 | v = [int(input()) for i in range(int(input()))] # 입력 print("\n".join(map(str,sorted(v)))) | cs |
반응형
'코딩테스트 연습 > 백준' 카테고리의 다른 글
[백준] 10989번 : 수 정렬하기 3 in python 파이썬 (0) | 2019.11.11 |
---|---|
[백준] 2751번 : 수 정렬하기 2 in python 파이썬 :: heap sort (0) | 2019.11.09 |
[백준] 2750번 수 정렬하기 in python 파이썬 (0) | 2019.11.02 |
[백준] 1436번 영화감독 숌 in python 파이썬 (0) | 2019.11.01 |
[백준] 1018번 : 체스판 다시 칠하기 in python 파이썬 (2) | 2019.10.21 |