목록분류 전체보기 (139)
배고픈 개발자 이야기
1.스마트 포인터 Widget *getObject() => unique_ptr getObject(); 일반 포인터를 활용하여 프로그래밍을 할 경우 Exception, Return또는 끝나는 시점에 직접 메모리 해제을 해야함 하지만 스마트 포인터는 Exception, Return, 끝나는 시점 모두 메모리를 자동으로 해제함 2.무브 시맨틱 vector를 할당할 때 return by value로 Object를 복사하는 비용이 매우 많이 발생할 수 있음 모던 C++에서 무브 시맨틱을 사용하여 Object가 쓸데없이 복사되는 일을 한번에 날릴 수 있게 되었음 Object가 아무리 'move-enabled'가 아닐지라도, vector 템플릿 자체는 'move-enabled'이므로 함수로부터 Object를 위한 임..
template를 사용하여 프로그래밍 하는것을 일반화(Generic)프로그래밍이라고도 한다. template은 함수나 클래스를 만들 수 있는 틀 붕어빵틀 + 재료 = 붕어빵 template + 객체 = 함수 or 클래스 일반화(Generic) = 붕어빵틀을 만드는것과 같습니다. template을 사용하지 않고 여러 타입에 대해 동작하는 함수를 만들려면 각 타입마다 오버로딩을 해야한다는 단점이 있습니다. template은 특수화 : 특정 타입에 대해서 별빵 또는 다른 기능을 수행하도록 하는 것인데 특수화도 오버로딩과 비슷하게 이해할 수 있습니다. 특수화를 하려는 타입에 대해 template를 따로 하나 더 정의하면 오버로딩을 하지 않아도 됩니다. Template - 여러 타입을 사용하는 template 일..
A game for one player is played on a board consisting of N consecutive squares, numbered from 0 to N − 1. There is a number written on each square. A non-empty array A of N integers contains the numbers written on the squares. Moreover, some squares can be marked during the game. At the beginning of the game, there is a pebble on square number 0 and this is the only square on the board which is ..
전무로 승진한 라이언은 기분이 너무 좋아 프렌즈를 이끌고 특별 휴가를 가기로 했다. 내친김에 여행 계획까지 구상하던 라이언은 재미있는 게임을 생각해냈고 역시 전무로 승진할만한 인재라고 스스로에게 감탄했다. 라이언이 구상한(그리고 아마도 라이언만 즐거울만한) 게임은, 카카오 프렌즈를 두 팀으로 나누고, 각 팀이 같은 곳을 다른 순서로 방문하도록 해서 먼저 순회를 마친 팀이 승리하는 것이다. 그냥 지도를 주고 게임을 시작하면 재미가 덜해지므로, 라이언은 방문할 곳의 2차원 좌표 값을 구하고 각 장소를 이진트리의 노드가 되도록 구성한 후, 순회 방법을 힌트로 주어 각 팀이 스스로 경로를 찾도록 할 계획이다. 라이언은 아래와 같은 특별한 규칙으로 트리 노드들을 구성한다. 트리를 구성하는 모든 노드의 x, y 좌..
A non-empty array A consisting of N integers is given. A pair of integers (P, Q), such that 0 ≤ P < Q < N, is called a slice of array A (notice that the slice contains at least two elements). The average of a slice (P, Q) is the sum of A[P] + A[P + 1] + ... + A[Q] divided by the length of the slice. To be precise, the average equals (A[P] + A[P + 1] + ... + A[Q]) / (Q − P + 1). For example, arra..
A DNA sequence can be represented as a string consisting of the letters A, C, G and T, which correspond to the types of successive nucleotides in the sequence. Each nucleotide has an impact factor, which is an integer. Nucleotides of types A, C, G and T have impact factors of 1, 2, 3 and 4, respectively. You are going to answer several queries of the form: What is the minimal impact factor of nu..
C를 배우는 이유 - 컴퓨터 내부의 원리를 더 쉽게 이해할 수 있습니다. - C언어에서 파생되어 생겨난 언어를 배우는데 많은 도움이 됩니다. - 엄청나게 많은 코드들이 C언어로 작성되어 있습니다. 따라서, 어느 정도 수준 이상에 도달하게 된다면 C언어를 결코 피하실 수 없을 것입니다. \n 엔터:개행문자, \은 Escape character라고 합니다. - 기수법?? : 수를 표현하는 방법 2/10/16진수등으로 표현하는 방법 워드(Word)라고 부르는 단위가 있습니다. 컴퓨터에서 연산을 담당하는 CPU에는 레지스터(register)라는 작은 메모리 공간이 있는데, 이곳에다가 값을 불러다 놓고 연산을 수행하게 됩니다. CPU에서 연산을 수행하기 위해 잠시 써놓는 부분을 레지스터라고 합니다. 레지스터의 크..
프로젝트 구조 예제 클래스의 관계도 입니다. MyClass.h 파일에는 Myclass클래스의 선언(prototype)이 있습니다. MyClass.cpp 파일에는 클래스의 멤버함수에 대한 정의가 있습니다. main.cpp에 Myclass 의 선언과 정이가 모두 들어가도 상관없습니다. 하지만 사용하는 클래스가 많아질 수록 main내부는 클래스의 선언과 정의로 복잡해질 것입니다. 그래서 위와 같이 각 클래스를 모듈화하여 분리하여 코드를 작성합니다. 모듈화 프로그램의 기본입니다. main.cpp에서는 늘 그래왔던 것 처럼 main 함수 윗부분에 클래스에 대한 정의가 있으면 됩니다. 그래서 MyClass.h 파일을 include(인클루드) 하면 됩니다. 아주 간단한 소스를 구성해 보았습니다. 네임스페이스를 선언하..