월별 & 주간 목표 혹은 느낀점/면접 예상 질문 4

면접 예상 문제 코테 문제 - 문자열의 중복이 없는가

중복이 없는가 문자열이 주어졌을 때, 이 문자열에 같은 문자가 중복되어 등장하는지 확인하는 알고리즘을 작성하라자료구조를 추가로 사용하지 않고 풀 수 있는 알고리즘 또한 고민하라. 해답 : 먼저 면접관에게 문자열이 ASCII 문자열이지 유니코드 문자열인지 물어 봐야 한다.이를 통해 컴퓨터 과학을 깊이 있게 이해하고 있다는 사실을 알릴 수 있으며,세부사항을 신경 쓰고 있다는 인상을 남기자. 여기서는 간단하게 ASCII 문자열이라고 가정해보자.이 가정이 없다면 저장 공간의 크기를 늘려야 할 수도 있다. 이 문제를 푸는 한 가지 방법은 문자 집합에서 i번째 문자가 배열 내에 존재하는지 표시하는 불린(boolean) 배열을 사용하는 것이다.같은 원소에 두 번 접근하면, 바로 false를 반환한다. 또한 문자..

StringBuilder

문자열의 리스트가 주어졌을 때 이 문자열들을 하나로 이어붙이려고 한다.이떄의 수행 시간은 어떻게 되는가?문제를 간단히 하기 위해 모든 문자열의 길이를 x라 하자.같은 n개의 문자열이 주어졌다고 가정해보자. 문자열을 이어붙일 때마다 두 개의 문자열을 읽어 들인 뒤 문자를 하나하나 새로운 문자열에 복사해야 한다.처음에는 x개, 두 번쨰는 2x개, 세 번째는 3x개 n번 쨰는 nx개의 문자열을 복사해야 한다. 따라서 총 수행 시간은 O(x + 2x + 3x + ... + nx)즉, O(xn^2)이 된다. StringBuilder는 이 문제를 해결해 줄 수 있다.StringBuilder는 단순하게 가변 크기 배열을 사용하여 필요한 경우에만 문자열을 복사하게끔 해준다. 문자열, 배열, 일반적인 자료구조를 연습해 ..

C#과 친해지기 위한 공부 방법

C#과 친해지기 위한 공부 방법C# 공부를 다음과 진행하고자 한다. 1. 알고리즘 + C# 공부C#으로 짜여진 알고리즘을 보고,내가 다시 짜보기 코테1. C++로 푼 문제 -> C# 다시 풀어보기2. C#로 푼 문제 -> C++ 으로 다시 풀어보기 2. 관련 정보는 공식문서 위주로MS/Unity 공식문서 위주로 보며, 공부 목록 레퍼런스는 기본서로 유명한 책 하나 잡고 보기.

C/C++ 스마트 포인터 간단 정리

스마트 포인터 C++ 프로그램에서 동적할당 된 메모리는, 반드시 delete를 통해서 메모리 해제가 이루어져야 합니다.C++에서 메모리 누수로부터 프로그램의 안정적으로 관리할 수 있도록스마트 포인터를 제공하고 있습니다.이 스마트 포인터는 RAII의 개념을 기반으로 제작되었으며,클래스 템플릿으로 구현되어 있습니다.포인터 처럼 동작하는 클래스 템플릿으로, 사용이 끝난 메모리를 자동으로 해제해주고,Dangling 포인터, 할당 실패 등의 버그를 방지하도록 제작되었습니다. 이러한 스마트 포인터의 사용 이유는,스마트 포인터를 사용함으로써,new, delete와 같은 키워드를 사용하는 추가적인 코드를 줄일 수 있으며,RAII 개념을 기반으로 제작되었기 때문에,제작의도에 맞게 사용자가 메모리 관리를 할 때 좀 더 안..