-시간복잡도 (중요)
-공간복잡도 종요한 지표는 아님 (보통 컴퓨터에게 맡김) 지나치게 쓰는 것에만 주의하자!!
-시간복잡도 -> 최악의 경우를 상정하고 계산
O(1)
O(log N)
O(n^2)
-공간복잡도 -> 실제로 메모리 공간을 얼마나 사용하는지
<배열의 특징>
-인덱스로 접근
-고정된크기(생성할떄 고정되고 크기를 변경할 수 없음 변경하려면 새롭게 재할당 해야함)
-연속적인 메모리공간
배열 조회 : O(1)
삽입 삭제 : O(n)
정렬 : O(n log n)
검색 : 저열ㄹ되지 않으면 O(n) 정렬된 배열에서 이진 검색은 O(log n)
장점: 빠르게 접근 가능하고 메모리 효율적으로 관리 가능
단점: 삽입 삭제할 떄 다른 요소를 이동해야 하므로 비 효율적이다, 크기가 고정된다, 크기가 고정되어
있어서 메모리 낭비가 될 수 있다.
<리스트의 특징>
-링크드리스트-
-앞 뒤에 있는 사람만 알고 있으면 중간 삽입이 가능
-조회는 배열에 비해 느리지만 삽입삭제에 강점이 있다.
-조회 성능 O(N)
c#은 가비지 콜렉터때문에 사용(링크) 안되있으면 알아서 삭제해줌
c# 리스트는 가변형 배열을 사용하기때문에 인덱스로 요소에 접근이 가능하다.
public class Solution
{
public double solution(int[] arr)
{
double answer = 0;
double sum = 0;
for(int i = 0; i < arr.Length; i++)
{
sum += arr[i];
}
answer = sum/arr.Length;
return answer;
}
}
public class Solution
{
public int solution(int n)
{
int answer = 0;
while(n != 0)
{
answer += n % 10;
n = n / 10;
}
return answer;
}
}
public class Solution
{
public int solution(int n)
{
int answer = 0;
string nts = n.ToString();
char[] stc = nts.ToCharArray();
for(int i = 0; i < stc.Length; i++)
{
answer += int.Parse(stc[i].ToString());
}
return answer;
}
}
입력받는 int값을 string 형태로 변환해서 풀이하는 방법도 있다!!
문자열을 char로 변환하는 기술**
1.int.Parse 는 인자로 string 형태만을 받기 때문에
char형을 int값으로 바꾸기 위해서는 char.ToString()을 이용해야 한다.
2.char형은 아스키코드로 변환되기 때문에 48을 빼주는 방법도 있다(char 0은 아스키코드로 48)
public class Solution
{
public int solution(int n)
{
int answer = 0;
for(int i = 1; i < n+1; i++)
{
if(n % i == 0)
{
answer += i;
}
}
}
}