We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
입력의 크기와 문제를 해결하는데 걸리는 시간의 상관관계
컴퓨터가 1초에 할 수 있는 연산의 단위: 어림잡아 3-5억
1 + 1 + n x (2 + 2 + 1) + 1 = 5n + 3
⇒ n에 비례한다.
문제
대회장에 N명의 사람들이 일렬로 서있다. 거기서 당신은 이름이 ‘가나다’인 사람을 찾기 위해 사람들에게 이름을 물어볼 것이다. 이름을 물어보고 대답을 듣는데까지 1초가 걸린다면 얼마만큼의 시간이 필요할까?
정답
앞에서부터 차례대로 물어보면 된다.
최악의 경우 N초, 최선의 경우 1초, 평균적으로 N/2초가 필요하므로
결과적으로 걸리는 시간은 N에 비례한다.
대회장에 N명의 사람들이 일렬로 서있다. 거기서 당신은 이름이 ‘가나다’인 사람을 찾기 위해 사람들에게 이름을 물어볼 것이다. 이 때 사람들은 이름 순으로 서있다. 이름을 물어보고 대답을 듣는데까지 1초가 걸린다면 얼마만큼의 시간이 필요할까?
업다운게임을 하듯이 중간 사람에게 계속 물어보면 된다. 최선의 경우 1초, 최악의 경우 logN초, 평균적으로 logN초가 필요하다.
결과적으로 걸리는 시간은 logN에 비례한다.
주어진 식을 값이 가장 큰 대표항만 남겨서 나타내는 방법
O(N): 5N + 3, 2N + 10logN, 10N : 선형 시간
O(logN): 로그 시간
O(N^2): N^2 + 2N + 4, 6N^2 + 20N + 10logN : 다항 시간
O(NlogN): NlogN + 30N + 10, 5logN + 6 : 다항 시간
O(1): 5, 16, 36 // 값이 상수일 떄
O(1) < O(logN) < O(N) < O(NlogN) < O(N^2) < O(2^N) < O(N!)
O(1) : 상수시간
O(logN) : 로그 시간
O(N) : 선형 시간
O(NlogN) : 다항 시간
O(N^2) : 다항 시간
O(2^N) : 지수 시간 → N이 25 이하 정도로 작은 수가 아니라면 시간 제한을 통과하기 힘들어짐.
O(N!) : 지수 시간보다 더 가파르게 올라감 → N이 11이하 정도로 굉장히 작은 수가 아니라면 시간 제한을 통과하기 힘듦.
💡 예를 들어, 주어진 배열을 크기 순으로 정렬하는 문제를 생각해보자
입력의 크기와 문제를 해결하는데 필요한 공간의 상관관계
512MB = 1.2억개의 int
The text was updated successfully, but these errors were encountered:
hwangJi-dev
No branches or pull requests
시간복잡도
입력의 크기와 문제를 해결하는데 걸리는 시간의 상관관계
컴퓨터가 1초에 할 수 있는 연산의 단위: 어림잡아 3-5억
1 + 1 + n x (2 + 2 + 1) + 1 = 5n + 3
⇒ n에 비례한다.
문제
대회장에 N명의 사람들이 일렬로 서있다. 거기서 당신은 이름이 ‘가나다’인 사람을 찾기 위해 사람들에게 이름을 물어볼 것이다. 이름을 물어보고 대답을 듣는데까지 1초가 걸린다면 얼마만큼의 시간이 필요할까?
정답
앞에서부터 차례대로 물어보면 된다.
최악의 경우 N초, 최선의 경우 1초, 평균적으로 N/2초가 필요하므로
결과적으로 걸리는 시간은 N에 비례한다.
문제
대회장에 N명의 사람들이 일렬로 서있다. 거기서 당신은 이름이 ‘가나다’인 사람을 찾기 위해 사람들에게 이름을 물어볼 것이다. 이 때 사람들은 이름 순으로 서있다. 이름을 물어보고 대답을 듣는데까지 1초가 걸린다면 얼마만큼의 시간이 필요할까?
정답
업다운게임을 하듯이 중간 사람에게 계속 물어보면 된다. 최선의 경우 1초, 최악의 경우 logN초, 평균적으로 logN초가 필요하다.
결과적으로 걸리는 시간은 logN에 비례한다.
빅오표기법
주어진 식을 값이 가장 큰 대표항만 남겨서 나타내는 방법
O(N): 5N + 3, 2N + 10logN, 10N : 선형 시간
O(logN): 로그 시간
O(N^2): N^2 + 2N + 4, 6N^2 + 20N + 10logN : 다항 시간
O(NlogN): NlogN + 30N + 10, 5logN + 6 : 다항 시간
O(1): 5, 16, 36 // 값이 상수일 떄
O(1) < O(logN) < O(N) < O(NlogN) < O(N^2) < O(2^N) < O(N!)
O(1) : 상수시간
O(logN) : 로그 시간
O(N) : 선형 시간
O(NlogN) : 다항 시간
O(N^2) : 다항 시간
O(2^N) : 지수 시간 → N이 25 이하 정도로 작은 수가 아니라면 시간 제한을 통과하기 힘들어짐.
O(N!) : 지수 시간보다 더 가파르게 올라감 → N이 11이하 정도로 굉장히 작은 수가 아니라면 시간 제한을 통과하기 힘듦.
💡 예를 들어, 주어진 배열을 크기 순으로 정렬하는 문제를 생각해보자
공간복잡도
입력의 크기와 문제를 해결하는데 필요한 공간의 상관관계
512MB = 1.2억개의 int
The text was updated successfully, but these errors were encountered: