Replies: 1 comment
-
1. 아래의 코드의 시간복잡도를 구하는 과정을 적어주세요
답 : |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
1. 아래의 코드의 시간복잡도를 구하는 과정을 적어주세요
답 : O(n^2) 1+2+3+4+....+n 의 등차수열이다. 이는 n×(n+1)/2가 되기때문에 n^2/2 + n/2가 되기때문에, 상한인 O(n^2) 이 된다.Scanner sc = new Scanner(System.in); int n = Integer.parseInt(sc.nextInt()); int[] arr = new int[n]; for(int i=0; i<n; i++) { for(int j=i+1;j<n;j++) { if(arr[i] > arr[j]){ int temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } } }2. 배열의 특징 3가지와 접근, 탐색, 삽입, 삭제의 시간복잡도를 말해주세요.
답 : 1. 배열은 데이터를 인접한 메모리에 순차적으로 저장한다. 2. 고정된 크기로 할당이 된다. 3. 직접 접근(랜덤 접근) 이 가능하다.접근: O(1)
탐색 : O(n)
삽입 : O(n)
삭제 : O(n)
3. 리스트의 특징 3가지와 접근, 탐색, 삽입, 삭제의 시간복잡도를 말해주세요. 단 삽입과 삭제는 해당 노드의 위치를 안다고 가정합니다.
답 : 1. 리스트는 데이터를 노드의 논리적인 연결을 통해 순차적으로 저장한다. 2. 크기가 고정되어있지 않다.. 3. 직접 접근(랜덤 접근) 이 불가능하고 순차 접근만 가능하다.접근: O(n)
탐색 : O(n)
삽입 : O(1)
삭제 : O(1)
4. ArrayList와 LinkedList의 차이점을 말해주세요. 어느 상황에서 어떤 자료구조를 사용하면 좋은지도 말해주세요.
답 : ArrayList는 내부적으로 배열을 사용한 List 구현체입니다. 내부적으로 배열을 사용하기 때문에 배열의 크기 이상으로 데이터가 추가된다면, 해당 배열의 크기에서 더 늘린 크기의 배열을 할당한 뒤, 데이터를 복사한다음 새로운 데이터를 추가합니다. 또한 배열을 이용하기 때문에 접근에 유리합니다. 이런 ArrayList는 데이터의 크기를 유추할 수 있거나, 추가 또는 삭제 작업보단 조회를 하는 작업이 많은 서비스에 유리합니다.LinkedList는 노드간 연결을 이용한 List 구현체입니다. 따라서 데이터가 계속 추가된다해도 추가적인 작업(배열을 늘린 뒤, 복사하여 추가와 같은 작업)이 없기때문에 데이터의 크기를 유추할 수 없는 작업에 유리하며, 조회보다는 삽입, 삭제, 특히 맨 뒤 혹은 맨 앞에 추가/삭제 작업이 많은 서비스에 유리합니다.
Beta Was this translation helpful? Give feedback.
All reactions