오늘 배운 것
nullable // null 값을 가질 수 있는 값형에 대한 특별한 형식(원래는 값형은 null 값을 가질 수 없음)
값형변수가 null인지 아닌지를 확인하고 처리해야할때 유용하게 사용됨
? 연산자를 사용하여 선언됨
?? // null 병합 연산자
int nonNullableInt = nullableInt ?? 0;
nullable형식이 null이라면 물음표 두개 뒤에 있는 0을 쓰고 아니면 null이 아니라면 뒤에 그 앞의 nullable 형식의 변수를 쓰겠다는 뜻.
StringBuilder란 내부 버퍼를 사용하여 문자열 조작을 수행하는 것. 가변적으로 사용이 가능하며 효율적인 메모리 관리가 가능함.
Append, Insert, Remove, Replace, Clear가 주요 메서드이다.
사용할때는 클래스의 객체화처럼 StringBuilder ~~ = new StringBuilder();를 한 뒤에, StringBuilder에서 주요하게 쓰이는 메서드들을 활용하여 추가 삽입 제거 대체 등을 하면 된다.
알고리즘 = 입력을 받아 원하는 출력을 생성하기 위한 절차
정확하고 일관된 결과를 제공해야함
효율적이면서도 정확한 알고리즘을 짜는 것이 중요하다.
Big-O 표기법이란 알고리즘의 효율성을 나타내는 표기법으로 알고리즘이 얼마나 많은 시간이나 공간을 필요로 하는지 설명, 즉 이 알고리즘이 얼마나 비효율적인가를 나타내는 지표다.
시간복잡도 = 문제 해결하는데 걸리는 시간을 나타내는 척도로, 실제 시간이 아닌 알고리즘이 작동하는데 필요한 연산 횟수로 측정. Big-O 표기법을 사용하여 표시
공간복잡도 = 얼마나 공간을 할애해야하는가를 나타내는 척도로, 입력 크기에 따라 필요한 저장공간의 양을 측정. 이 역시 Big-O 표기법을 사용하여 표시
알고리즘.. 빅오.. 시간복잡도 공간복잡도.. 굉장히 어렵다..
그래도 대충 시간복잡도는 반복문의 반복횟수 (반복문이 한개면 O(n), 중첩반복문이면 O(n^2) 같은 느낌) 공간복잡도는 따로 리스트를 할당하거나 하지 않고 하나의 값을 찾는 형태라면 O(1), 리스트 등은 최대치를 찾는것이기에 O(n)이 될수있다.
오늘의 회고
오늘은 알고리즘을 이해하기 위해 하루를 보냈다.
아침 9시부터 알고리즘 세션 강좌도 듣고 C# 문법 종합반 강의도 알고리즘 부분에 많은 정신력을 할애했다.
그럼에도 이해하지 못한 내 자신이 레전드다.
내일은 C#문법 5주차 강의와 알고리즘 세션 다시보기 등을 통해 알고리즘에 대해서 더 파고들어볼 생각이다.
당장 목요일 아침부터 알고리즘 문제풀이해야하는데.. 잘할 수 있겠지..?
내일도 화이팅이다..