반응형
코딩 테스트에서의 시간복잡도
코딩 테스트에서는 빅-오(O(n))(최악의 케이스)을 기준으로 수행시간을 계산하는 것이 좋다.
시간복잡도 도출기준
- 상수는 계산에서 제외
- 가장 많이 중첩된 반복문 수행횟수가 기단복잡도의 기준
연산횟수가 N, 3N 등 이라도 상수를 무시하므로 둘 다 시간복잡도는 O(n)으로 동일하다.
그러나 이중중첩문의 N**2의 경우 시간복잡도는 변화없이 N**2으로 유지된다.
백준 2750번: 수 정렬하기
반응형
문제
N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오.
입력
첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은 정수이다. 수는 중복되지 않는다.
출력
첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력한다.
해설
x = int(input())
num_list = []
for i in range(x):
num_list.append(int(input()))
num_list1 = sorted(num_list)
for i in range(len(num_list)):
print(num_list1[i])
제한시간이 2초이기때문에 4,000만 번이하의 연산횟수로 문제를 해결해야한다.
버블정렬의 시간복잡도=O(N**2) -> 부적합 알고리즘
병합정렬의 시간복잡도=O(nlogn) -> 적합 알고리즘
반응형
'Algorithm' 카테고리의 다른 글
[알고리즘/파이썬] 자료구조 - 투 포인터(Two pointers) | 백준 2018번: 수들의 합 5 (0) | 2023.07.22 |
---|---|
[알고리즘/파이썬] 자료구조 - 슬라이딩 윈도우(Sliding window) | 백준 12891번: DNA 비밀번호 (0) | 2023.07.18 |
[알고리즘/파이썬] 자료구조 - 구간 합(Sum of Segment), 부분 합(Partial Sum) | 백준 11659번: 구간 합 구하기 4 (0) | 2023.07.16 |
[알고리즘/파이썬] 자료구조 - 배열과 리스트 | 11720번: 숫자의 합, 1546번: 평균 (0) | 2023.07.14 |
[알고리즘/파이썬] 백준 10989번: 수 정렬하기 3 문제 메모리초과 해결방법, 정답 (0) | 2023.07.12 |