본문 바로가기

STUDY

(36)
백준알고리즘 1919번 애너그램만들기 [ 문제 URL ]https://www.acmicpc.net/problem/1919 변수 선언이 너무 많아 아쉬운 코드였다. sort함수를 사용할 때는 string이 char*보다 편한것같다.
문자열 거꾸로 정렬하기 Q : 문자열을 뒤에서부터 정렬하는 알고리즘을 작성하세요.Standard Template library -> library Template Standard apple grape melon strawberry ->strawberray melon grape apple 우리가 많이 해보았던 알고리즘은 asdf같은 문자열을 fdsa로 정렬하는 알고리즘입니다.하지만 이 문제는 문자열 자체를 순서를 바꾸지않고 뒤집는 것이므로 조금 더 응용 능력이 필요합니다. 처음으로 작성한 알고리즘은 stack에 string을 넣는 타입으로 작성하였습니다.stack은 선입후출이므로 뒤에서 부터 string이 나오게 됩니다. [ 첫번째 코드 ] 공백문자열이 나오면 Stack에 넣어주는 형식으로 작성하였습니다. 이 결과 2가지의 문제..
[ STL ] 표준 시퀀스 컨테이너(vector, deque, list) 컨테이너는 같은 타입을 저장, 관리할 목적으로 만들어진 클래스입니다. 컨테이너는 2가지로 나뉩니다. -표준 시퀀스 컨테이너-표준 연관 컨테이너 시퀀스 컨테이너는 vector, deque, list 3가지가 있습니다. ->vector deque는 배열기반, list는 노드기반 컨테이너연관 컨테이너는 set, multiset, map, multimap 4가지가 있습니다. -> 전부다 노드기반 컨테이너 [ 시퀀스 컨테이너 ] 시퀀스 컨테이너는 차례차례 원소를 추가하고 제거하는 push_back()과 pop_back()을 가지며 첫 원소와 마지막 원소를 참조하는 front()와 back()을 가집니다. 또한, 지정한 위치에 원소를 삽입할 수 있는 insert()를 가집니다. > vector - vector는 앞..
빅오(Big-O) 표기법 > Big-O 표현방법은 알고리즘의 퍼포먼스를 이야기할때 상당히 좋은 방법이다. ▶ O(1) void printFirstItem( int[ ] array ){cout
[Context Switching] 프로세스와 쓰레드에서의 컨텍스트 스위칭 * 프로세스란? 실행파일을 클릭했을 때, 메모리(RAM)할당이 이루어지고, 이 메모리공간으로 코드가 올라간다. 이 순간부터 이 프로그램은 '프로세스'라 불리게 된다. * 프로세스의 스케줄링? CPU는 하나인데, 동시에 여러 프로세스가 실행되어야한다. CPU는 여러개의 프로세스를 번갈아가면서 실행하는데 매우 고속이기 때문에 우리 눈에는 동시에 실행되는 것처럼 보인다. 이러한 멀티프로세스 운영체제에서 프로세스의 CPU 할당 순서 및 방법을 결정짓는 것을 '스케줄링'이라 한다. * 프로세스의 상태변화? 프로세스는 Ready, Running, Blocked 상태를 지닌다. Running 상태인 프로세스는 더 우선순위가 높은 프로세스가 실행될 경우 Ready 상태가 되고, 우선순위가 높은 프로세스가 실행된다. B..
상속과 동적,정적바인딩 * 다형성이란? 부모 Class의 포인터로 자식객체를 가리킬 수 있다는 점과, 이런 경우에도 가상함수를 통해서 알맞은 자식 class의 함수가 호출된다는 점이 다형성을 지원하는 C++의 기능이다. 즉, 객체간의 연결을 유연하게 해주는 원동력이 된다. * 동적바인딩과 정적 바인딩 (1) 바인딩(Binding)이란? 프로그램 소스에 쓰인 각종 내부요소,이름 식별자들에 대해 값 또는 속성을 확정한 과정. 함수 주소를 찾아가는 과정이다. (2) 정적 바인딩(Static Binding)과 동적 바인딩(Dynamic Binding): 바인딩 과정이 컴파일 시점에 이루어지느나, 실행 도중 이루어지느냐에 따라 나뉩니다. - 정적 바인딩 ? 바인딩 과정이 컴파일 시점에 이루어지는 바인딩. 소스상에 명시적으로 int a ..
Class내에서의 Static 정적(Static)멤버변수는 '객체(Class Instance)가 소유하지않는(범주에 속하지 않는) 멤버이다. class A{public:int x; } 일반적인 멤버변수는 객체(Class Instance)가 생성될 때마다 독립적으로 생성된다. 하지만 class A{public:static int x; } 위와 같이 멤버에 static을 붙여 정적변수로 생성하면 해당 클래스에 하나만 생성되고 모든 객체에서 공동으로 접근할 수 있다.마찬가지로 정적 함수도 클래스에 하나만 생성되며 공동으로 접근 가능하다. * 정적멤버들도 접근지정자(public, protected, private)를 붙일 수 있다. * 정적 변수는 Class당 1개만 생성되므로 클래스 내부에서 초기화가 불가능하고, 클래스 외부에서 전역변수처..
[ Const 2편 ] Class에서의 Const초기화 Q. 다음 코드는 2가지 면에서 오류가 난다. 그 이유는 ? class Point {private:int Number;const int const _Number; public:int MinusNumber(int _Numver) const{Number = _Numver;}}; void main(){Point NewTest = Point();NewTest.MinusNumber(20); } (1) 일단 Const가 붙은 함수는 함수 내에서 Class 내의 변수 수정이 불가하다. (2) Const변수는 초기화가 되어야 하는데 안 되어있다. 그렇다면 Const변수는 어떻게 초기화를 할 수 있을까? Point(int Num){_Number = Num;} 이렇게 생성자에 해주면 될 것 같지만, 메모리 구조상 생성자가..