728x90
 

Keywords (C++)

Lists the C++ standard language keywords, Microsoft-specific keywords, and context-specific keywords.

docs.microsoft.com

 

이미 정의된 키워드는 특별한 의미를 같은 식별자로도 예약되어 있습니다. 그것들은 당신 프로그램에서 식별자들로 사용 될수 없습니다. 아래 마이크로소프트c++에서 예약된 키워드들이 있습니다. c++/cx and c++/cli에 지정된 이름과 언더스코어로 시작하는 이름들은 마이크로소프트 확장입니다.

Standard C++ keywords

alignas
alignof
and b
and_eq b
asm a
auto
bitand b
bitor b
bool
break
case
catch
char
char8_t c
char16_t
char32_t
class
compl b
concept c
const
const_cast
consteval c
constexpr

constinit c
continue
co_await c
co_return c
co_yield c
decltype
default
delete
do
double
dynamic_cast
else
enum
explicit
export c
extern
false
float
for
friend
goto
if
inline

int
long
mutable
namespace
new
noexcept
not b
not_eq b
nullptr
operator
or b
or_eq b
private
protected
public
register reinterpret_cast
requires c
return
short
signed
sizeof
static
static_assert

static_cast
struct
switch
template
this
thread_local
throw
true
try
typedef
typeid
typename
union
unsigned
using declaration
using directive
virtual
void
volatile
wchar_t
while
xor b
xor_eq b

 

a 마이크로소프트가 지정한 _asm 키워드는 c++ asm 구문으로 대체 됐습니다. asm 은 다른 c++ 구현과의 호환성을 위해 예약되어 있습니다. 그러나 구현되지 않았습니다. x86 타겟에서 인라인 어셈블리를 위해서 _asm을 사용하세요. 마이크로 소프트는 다른 타겟에서는 인라인 어셈블리를 지원하지 않습니다.

 

b 확장 연산자 동의어는 permissive 또는 /Za (Disable Language extenstions)가 지정 되었을 때 키워드 입니다. 그들은 마이크로소프트 확장이 가능 했을 때는 키워드가 아닙니다.

 

c /std:c++ 20 그 이상에 지정된 경우 지원합니다.

 

Microsoft-specific C++ keywords

C++에서 두개의 연속된 언더스코워를 포함하는 식별자는 컴파일러 구현을 위해 예약된 것입니다. 마이크로소프트 규칙은 마이크로소프트 키워드 앞에 더블 언더스코어를 두는 것 입니다. 이러한 단어는 식별자 이름으로 사용될 수 없다.

 

마이크로소프트 확장은 기본적으로 사용가능하다. 당신 프로그램이 완전히 호환적이게 하기 위해서는 당신은 컴파일 되는 동안 /eprmisiive or /Za(Diable language extension)의해 지정된 마이크로 소프트 확장기능을 비활성화 해야합니다. 이러한 옵션은 일부 마이크로소프트 관련 키워드를 비활성화 시킬 수 있다.

 

마이크로소프트 확장기능이 사용가능 할 때, 당신은 당신 프로그램에서 마이크로소프트 관련 키워드를 쓸수 있다. ANSI 준수하기 위해 이러한 키워드 앞에 더블언더스코어가 표시됩니다. 이전 버전과의 호환성을위해 많은 더블언더스코어 키워드의 싱글언더스코어 버전들은 지원됩니다. __cdel 키워드는 선행 언더스코어가 없이 사용 가능합니다.

__asm 키워드는 c++ asm 키워드로 대체 됩니다. asm은 다른 c++ 구현과의 호환성을 위해 예약되어 있습니다. 그러나 구현되어 있지 않습니다. __asm을 사용하세요.

 

__based 키워드는 32 64 bit 타겟 컴파일 유저만 사용 가능합니다.

 

__alignof e
__asm e
__assume e
__based e
__cdecl e
__declspec e
__event
__except e
__fastcall e
__finally e
__forceinline e

__hook d
__if_exists
__if_not_exists
__inline e
__int16 e
__int32 e
__int64 e
__int8 e
__interface
__leave e
__m128

__m128d
__m128i
__m64
__multiple_inheritance e
__ptr32 e
__ptr64e
__raise
__restrict e
__single_inheritancee
__sptre
__stdcall e

__super
__thiscall
__unaligned e
__unhook d
__uptr e
__uuidof e
__vectorcall e
__virtual_inheritance e
__w64 e
__wchar_t

 

d 이벤트 처리에 사용되는 고유 함수

e 이전 버전과의 하위 호환성을 위해 이러한 키워드는 마이크로소프트 확장기능을 사용할수 있으면(기본으로 사용가능함), 더블언더스코어와 싱글언더스코어 두가지 사용 가능합니다.

 

__declspec modifiers에 마이크로 소프트 키워드

이 식별자들은 __declspec 수정자를 위한 확장된 속성들입니다. 그런 맥락으로 키워드로 취급됩니다.

 

C++/CLI and C++/CX keywords

__abstract f
__box f
__delegate f
__gc f
__identifier
__nogc f
__noop
__pin f
__property f
__sealed f

__try_cast f
__value f
abstract g
array g
as_friend
delegate g
enum class
enum struct
event g

finally
for each in
gcnew g
generic g
initonly
interface class g
interface struct g
interior_ptr g
literal g

new g
property g
ref class
ref struct
safecast
sealed g
typeid
value class g
value struct g

 

f c++에 대해서 관리되는 확장 기능에만 적용 가능. 이 구문들은 현재 사용됮 ㅣ않는다. 더 많은 정보를 위해서는 Component Extions for runtime platforms를 확인하세요.

 

g C++/CLI에 저굥ㅇ 가능.

728x90
728x90

이글은 여우강사 최나영 유투브 채널 내용을 정리한 내용입니다.

 

 

Who's  this?

누구야?

 

I'm just calling to say hi

그냥 안부 전화 했어.

 

You are breaking up

전화가 자꾸 끊겨서 들려요.

 

You have the wrong number.

전화 잘못 거셨어요.

 

I'm sorry my phone died.

전화기 밧데리가 나가서 죄송해요.

 

Hey, hold on real quick?

저, 잠깐만 기다려 줄래요?

 

I have another call.

다른 전화가 오고 있어요.

 

Can we video chat?

화상전화 할 수 있어요?

 

Let's video chat

화상전화 하자.

 

I'll call you right back.

바로 다시 전화할게요.

 

 

728x90

'English > Conversation' 카테고리의 다른 글

여우강사_원밥쓰_5일_연애  (0) 2021.09.20
여우강사_원밥쓰_6일_패션&뷰티  (0) 2021.09.20
해커스톡_밀착영어  (0) 2021.09.20
여우강사_원밥쓰_2일_공부  (0) 2021.08.18
여우강사_원밥쓰_1일_일  (0) 2021.08.18
728x90

정의

레드블랙트리는 자가 균형 이진 탐색 트리(self-balancing binary search tree)로 '대칭형 이진 B트리'를 발전시켜 만들어 졌다. 레드 블랙 트리는 최악의 경우에도 우수한 실행시간을 보인다. 

 

시간 복잡도

트리에 n개의 원소가 있을 때 O(lonN)의 시간 복잡도로 삽입/삭제/검색이 가능하다.

 

특성

1. 노드는 레드 or 블랙

2. 루트 노드는 블랙이다.

3. 모든 리프 노드들(NIL)은 블랙이다.

4. 레드 노드의 자식노드 양쪽은 언제나 모두 블랙이다.(즉, 레드 노드는 연달아 나타날 수 없다. 블랙 노드만이 레드 노드의 부모 노드가 될 수 있다)

5. 어떤 노드로부터 시작되어 그에 속한 하위 리프 노드에 도달하는 모든 경로에는 리프 노드를 제외하면 모두 같은 개수의 블랙 노드가 있다.

 

사용예

C++11 기준 stl container map은 레드블랙트리로 만들어져 있다.

 

삽입 Flow

- 이진 탐색 트리 삽입 flow를 진행하고, redblack 특성을 만족시키기 위한 flow가 진행된다.

 

삭제 Flow

- 이진 탐색 트리 삭제 flow를 진행하고, redblck 특성을 만족시키기 위한 flow가 진행된다.

 

PPT

728x90
728x90

이진 탐색

특징

-

-

-

 

이진탐색트리

특징

-

-

-

 

구현해보기

이진탐색 c++

이진탐색트리 c++

728x90
728x90

노드기반 균형 이진 트리

key, value 형태로 이루어짐

728x90
728x90

이진 탐색

특징

- 데이터가 정렬되어 있을때 가능하다.

- 데이터를 배열 형태 정렬된 데이터를 들고 있으면 중간 데이터 접근이 빠르나, 데이터를 중간 삽입/삭제이 느리다.

- 데이터를 리스트 형태로 정렬된 데이터를 들고 있으면 임의접근이 빈번이 일어나는 이진탐색에서 비효율적이다

 

 

이진탐색트리

특징

- 데이터를 이진트리에 정렬된 데이터를 갖고 있으면 탐색 속도와 중간 데이터 삽입/삭제, 배열과 리스트의 이점을 모두 만족하는 이진탐색이 가능하다.

- 이진탐색트리를 이용할 경우, 이진 균형 트리 형태일 때 이진탐색이 시간복잡도lon2N으로 동작한다. 한쪽에 데이터가 치우져 있으면 일반 연결리스트와 다를바 없다.

- 이진 균형 트리의 종류에는 avl, red-black tree 등이 있다.

 

728x90
728x90

1.우수법

1.1 특징

-

-

-

 

1.2 Flow를 설명하세요(그림 또는 의사코드)

 

 

 

 

2.다익스트라

2.1 특징

-

-

-

 

2.2 Flow를 설명하세요(그림 또는 의사코드)

 

 

 

 

3.에이스타

3.1 특징

-

-

-

 

3.2 Flow를 설명하세요(그림 또는 의사코드)

 

 

 

 

4. BFS, 다익스트라, Astar의 차이점에 대해서 각 알고리즘을 비교하여 설명하시오.

-

-

-

-

 

5.다익스트라 구현하기

c++

c#

 

 

4번풀이

- 다익스트라는 BFS와 다르게 가중치 계산이 가능하고 때문에 가중치를 통해서 더 유리한 탐색 후보군을 추려야 한다.

- BFS와 다익스트라는 목적지가 없는 탐색방법이다. 그렇기 떄문에 목적지를 찾아가는 개념이 아니라, 탐색하다 보니 목적지에 닿아서 탐색을 종료하는 개념이다.

- 따라서 bfs, 다익스트트라 길찾기로는 항상 최단 거리를 구하는 것이 아니다.

- 에이스타는 다익스트라와 다르게 목적지를 향해 탐색한다. 다익스트라에서 탐색 후보군을 계산하는 과정에서 [현재-목적지] 코스트를 계산하는 연산이 추가된다고 생각하면 된다. 

728x90
728x90

특징

- 길찾기 목적지가 있음

- 목적지가 있기 때문에 탐색 경로를 선정하는 cost 값이 다익스트라랑 달라짐

- cost 값은 F = G + H .

- G : 시작부터 현재 위치까지의 코스트

- H : 현재위치에서 도착지까지의 코스트

 

Flow

 

샘플 프로젝트

c++

c#

 

참고

 

astar.pptx
0.17MB

728x90
728x90

특징

- 이동 가능한 정점을 찾는 로직을 우선순위 큐를 사용하여 개선 시킬 수 있다.

- 정점(노드) 정보를 배열이 아닌 딕셔너리 형태로 개선 시킬 수 있다.

- 가중치 그래프에 사용 적합

- bfs 길찾기와 마찬가지로 목적지는 따로 지정하지 않는다.

- 엉뚱한 길로 가기 떄문에

- 가장 좋은 후보를 찾을때 우선순위 큐를 통해서 최적화 가능하다

 

Flow

참고

dijkstra.pptx
0.04MB

728x90
728x90

특징

- 벽이 중간 중간 끊어진 형태라면 길을 찾지 못한다.

- 오른손으로 오른쪽 벽을 짚으면서 길을 찾는다.

- 오른쪽에 짚히는 벽이 없다면 오른쪽으로 간다.

- 순환구조가 아니라면 사용 가능하다.

 

Flow

샘플 프로젝트

c++

c#

 

참고

pathfind_righthand.pptx
0.04MB

728x90

'Algorithm > Concepts' 카테고리의 다른 글

길찾기,에이스타,PathFinding,AStar,A*  (0) 2021.08.19
길찾기,다익스트라,PathFinding,Dijkstra  (0) 2021.08.19
DFS,BFS,깊이우선탐색,너비우선탐색  (0) 2021.08.19
트리 logN 복잡도 도출  (0) 2021.08.18
Maze,미로  (0) 2021.08.13
728x90

DFS 

-

-

-

-

BFS

-

-

-

-

 

DFS vs BFS

 

구현해보기

c++

c#

728x90
728x90

Rookiss님의 [c#과 유니티로 만드는 mmorpg 게임 개발 시리즈] part2 : 자료구조와 알고리즘 강의 내용을 정리했습니다.

Rookiss님의 [c++과 유니티로 만드는 mmorpg 게임 개발 시리즈] part3 : 자료구조와 알고리즘 강의 내용을 정리했습니다.

DFS 

개념

- 깊이 우선 탐색 (Depth First Search)

- 더 이상 정점을 찾지 못할 때까지 정점을 타고 들어가고, 더이상 찾을 정점이 없으면 이전 위치로 복귀해서 또다른 정점을 찾는다.

- 재귀로 구현 가능하다.

 

리스트를 이용한 구현

        List<int>[] nodes = new List<int>[]
        {
            new List<int>() { 1, 3},
            new List<int>() { 0, 2, 3},
            new List<int>() { 1 },
            new List<int>() { 0, 1},
            new List<int>() { 5 },
            new List<int>() { 4 },
        };

        bool[] visited = new bool[6];
       
        public void DFSByList(int now)
        {
            Console.WriteLine(now);
            visited[now] = true; // 1) 우선 now부터 방문하고.

            foreach (int next in nodes[now])   // 연결되어 있는 정점이 아니면 패스.
            {
                // 방문한 정점이면 패스.
                if (visited[next])
                {
                    continue;
                }

                DFSByList(next);
            }
        }

 

행렬을 이용한 구현

 		
        int[,] nodes = new int[6, 6]
        {
            {0, 1, 0, 1, 0, 0 },
            {1, 0, 1, 1, 0, 0 },
            {0, 1, 0, 0, 0, 0 },
            {1, 1, 0, 0, 0, 0 },
            {0, 0, 0, 0, 0, 1 },
            {0, 0, 0, 0, 1, 0 },
        };

        bool[] visited = new bool[6];
        // 1)우선 now 부터 방문하고
        // 2)now와 연결된 정점들을 하나씩 확인해서, 아직 미발견 상태라면 방문한다.
        public void DFSByMatrix(int now)
        {
            Console.WriteLine(now);
            visited[now] = true; // 1) 우선 now부터 방문하고.

            for(int next = 0; next < 6; next++)
            {
                // 연결되어 있는 정점이 아니면 패스.
                if(nodes[now, next] == 0)
                {
                    continue;
                }

                // 방문한 정점이면 패스.
                if(visited[next])
                {
                    continue;
                }

                DFSByMatrix(next);
            }
        }

 

구현시 주의할 점

- 정점이 모두 이어진 경우가 아니라면 dfs 탐색을 1회만으로 불가능 한 경우가 생긴다.

     
     	public void SearchAll()
        {
            visited = new bool[6];

            for(int now = 0; now < 6; now++)
            {
                if(visited[now] == false)
                {
                    DFSByMatrix(now);
                }
            }
        }


BFS

개념

- 너비 우선 탐색 (Breadth First Search)

- 연결된 정점 정보를 저장하고 저장된 순서대로 꺼내서 다음 탐색을 시작한다.

- 순서대로 정점 정보를 사용하기 때문에 queue가 사용된다.

- 주로 길찾기 알고리즘에 사용된다.

 

리스트를 이용한 구현

 class Graph
    {
        List<int>[] nodes = new List<int>[]
        {
            new List<int>() { 1, 3},
            new List<int>() { 0, 2, 3},
            new List<int>() { 1 },
            new List<int>() { 0, 1, 4},
            new List<int>() { 3, 5 },
            new List<int>() { 4 },
        };

        public void BFSByList(int start)
        {
            bool[] found = new bool[6];

            Queue<int> q = new Queue<int>();
            q.Enqueue(start);
            found[start] = true;

            while (q.Count > 0)
            {
                int now = q.Dequeue();
                Console.WriteLine(now);

                // 인접하지 않으면 패스.
                foreach (int next in nodes[now])
                {
                    // 이미 발견 했으면 스킵.
                    if (found[next])
                    {
                        continue;
                    }

                    q.Enqueue(next);
                    found[next] = true;
                }
            }
        }
    }

 

행렬을 이용한 구현

 class Graph
    {
        int[,] nodes = new int[6, 6]
        {
            {0, 1, 0, 1, 0, 0 },
            {1, 0, 1, 1, 0, 0 },
            {0, 1, 0, 0, 0, 0 },
            {1, 1, 0, 0, 1, 0 },
            {0, 0, 0, 1, 0, 1 },
            {0, 0, 0, 0, 1, 0 },
        };

        public void BFSByMatrix(int start)
        {
            bool[] found = new bool[6];

            Queue<int> q = new Queue<int>();
            q.Enqueue(start);
            found[start] = true;

            while(q.Count > 0)
            {
                int now = q.Dequeue();
                Console.WriteLine(now);

                for(int next = 0; next < 6; next++)
                {
                    // 인접하지 않으면 패스.
                    if(nodes[now, next] == 0)
                    {
                        continue;
                    }

                    // 이미 발견 했으면 스킵.
                    if(found[next])
                    {
                        continue;
                    }

                    q.Enqueue(next);
                    found[next] = true;
                }
            }
        }

        public void BFSByList(int start)
        {
            bool[] found = new bool[6];

            Queue<int> q = new Queue<int>();
            q.Enqueue(start);
            found[start] = true;

            while (q.Count > 0)
            {
                int now = q.Dequeue();
                Console.WriteLine(now);

                // 인접하지 않으면 패스.
                foreach (int next in adj2[now])
                {
                    // 이미 발견 했으면 스킵.
                    if (found[next])
                    {
                        continue;
                    }

                    q.Enqueue(next);
                    found[next] = true;
                }
            }
        }
    }

 

DFS vs BFS

- dfs는 발견과 동시에 방문한다. 다른 루트에 의해서 발견되었다고 해도 내가 먼저 방문하면 장땡.

- bfs는 발견된 정보는 우선 queue에 저장하고 queue 정보를 토대로 순차적으로 방문한다.

 

 

728x90

'Algorithm > Concepts' 카테고리의 다른 글

길찾기,다익스트라,PathFinding,Dijkstra  (0) 2021.08.19
길찾기,우수법,PathFinding,RightHand  (0) 2021.08.19
트리 logN 복잡도 도출  (0) 2021.08.18
Maze,미로  (0) 2021.08.13
Big-O,빅오  (0) 2021.08.13
728x90
 

Identifiers (C++)

Learn more about: Identifiers (C++)

docs.microsoft.com

식별자는 다음을 나타내는데 사용되는 문자열 시퀀스다.

- 객체나 변수 이름

- 클래스, 구조체 또는 유니온 이름

- 열거타입 이름

- 클래스, 구조체, 유니온 또는 열거 맴버

- 함수나 클래스 멤버 함수

- typedef 이름

- 라벨 이름

- 매크로 이름

- 매크로 파라메터

 

다음 문자는 식별자의 모든 문자로 사용된다.

_ a b c d e f g h i j k l m
n o p q r s t u v w x y z
A B C D E F G H I J K L M
N O P Q R S T U V W X Y Z

범용문자이름의 특정범위 또한 식별자로 사용된다. 식별자에서의 범용문자이름은 기본 문자셋에서 문자나 제어 문자로 ㅅ지정될 수 없다. 더 많은 정보는 여길 봐라. Character Sets. 이런 유니코드 숫자 범위는 식별자에 모든 문자로 범용 캐릭터 문자 이름이 사용될 수 있다.

  • 00A8, 00AA, 00AD, 00AF, 00B2-00B5, 00B7-00BA, 00BC-00BE, 00C0-00D6, 00D8-00F6, 00F8-00FF, 0100-02FF, 0370-167F, 1681-180D, 180F-1DBF, 1E00-1FFF, 200B-200D, 202A-202E, 203F-2040, 2054, 2060-206F, 2070-20CF, 2100-218F, 2460-24FF, 2776-2793, 2C00-2DFF, 2E80-2FFF, 3004-3007, 3021-302F, 3031-303F, 3040-D7FF, F900-FD3D, FD40-FDCF, FDF0-FE1F, FE30-FE44, FE47-FFFD, 10000-1FFFD, 20000-2FFFD, 30000-3FFFD, 40000-4FFFD, 50000-5FFFD, 60000-6FFFD, 70000-7FFFD, 80000-8FFFD, 90000-9FFFD, A0000-AFFFD, B0000-BFFFD, C0000-CFFFD, D0000-DFFFD, E0000-EFFFD

다음 문자는 처음을 제외하고는 식별자에서 모든 문자로 사용된다.

0 1 2 3 4 5 6 7 8 9

이러한 유니코드 포인트 넘버 범위는 또한 첫번째를 제외하고 식별자의 모든 문자에 대해서 범용문자이름이 사용됩니다. 

 

마이크로소프트 관련

마이크로소프트C++의 오직 처음 2048문자 식별자만 중요합니다. 사용자에 의해 재정의된 타입 이름은 타입 정보를 보존하기 위해 컴파일러에 의해 재구성됩니다. 타입 정보를 포함하는 최종적인 이름은 2048문자보다 길지 않습니다. (더 많은 정보를 위해서 Decorated Names를 봐라) 재구성된 식별자 길이에 영향을 미치는 요소 들은 :

 

- 그 식별자가 사용자 정의된 객체나 사용자 정의 타입에서 파생된 타입을 나타내는지 아닌지

- 그 식별자가 함수나 함수로 부터 파생된 타입을 나태는지 아닌지

- 함수 인자의 숫자

 

달러 표시인 $는 마이크로 소프트 c++ 컴파일러(msvc)에서 타장한 식별자 문자이다. msvc는 당신이 식별자에 허용된 범용 문자 이름으로 표현되는 실제 문자들을 사용하는 것 또한 허용합니다. 이러한 문자들을 사용하기 위해서는 당신은 그들으 포함하는 인코딩 코드페이지 파일을 저장해야 합니다. 이 예제는 어떻게 확장 문자와 범용 문자 이름이 당신 코드에서 교대로 사용되는 보여 줍니다.

 

// extended_identifier.cpp
// In Visual Studio, use File, Advanced Save Options to set
// the file encoding to Unicode codepage 1200
struct テスト         // Japanese 'test'
{
    void トスト() {}  // Japanese 'toast'
};

int main() {
    テスト \u30D1\u30F3;  // Japanese パン 'bread' in UCN form
    パン.トスト();        // compiler recognizes UCN or literal form
}

식별자에 사용되는 문자들 범위는 c++/cli 코드를 컴파일 할때 덜 엄격합니다. 코드에서 식별자는 Standard ECMA-355:Common Langue Infrastructure(CLI)를 따르는 /clr을 사용하여 컴파일 됩니다.

 

END 마이크로소프트 관련

식별자의 첫번째 문자는 반드시  대문자든, 소문자든 알파벳 문자거나 _언더스코어여야 한다. C++ 식별자는 예민하기 때문에, fileName 과 FileName은 다르다.

 

식별자는 정확하게 같은 키워드와 철자와 대소문자를 정확히 일치시킬 수 없다. 키워드를 포함하는 식별자는 괜찮다. 예를 들어 Pint 는 가능한 식별자다 키워드인 int를 포함하고 있더라도.

 

식별자에 언더스코어를 연속으로 두개 사용하거나 대문자 뒤에 선행 언더스코어를 단독으로 사용해라 이것은 모든 범위에서 c++ 구현이 예약된다. 당신은 파일 범위 내의 소문자 문자 앞에 선형 언더스코어를 사용하는 것을 피해야 합니다. 미래의 예약된 식별자 또는 현재의 것들과 충돌 가능성이 있기 때문입니다.

 

 

728x90
728x90
 

Comments (C++)

Learn more about: Comments (C++)

docs.microsoft.com

 

주석은 컴파일러가 무시하는 텍스트입니다. 그러나 프로그래머에게 매우 유용합니다. 조석은 보통 향후에 참조를 위해 코드에 주석을 달기 위해 사용됩니다. 컴파일러는 공백처럼 주석을 다룹니다. 여러분은 특정 라인을 비활성화 시키기 위한 테스트로 사용할 수 있습니다. 하지만 #if/#endi 같은 전처리기 지시자를 사용하는 것이 더 좋다. 당신은 주석을 포함 특정 코드를 감쌀 수 있다. 그러나 당신은 주석을 중첩할 수 없기 때문입니다.

 

C++ 주석은 다음과 같은 방법으로 작성됩니다.

- The /*(슬래쉬,애스터리스크) 문자 다음에 문자 시퀀스가 표시되고(새로운 줄 포함), 그 다음에 */가 표시됩니다. 이 구문은 ANSI C.와 같습니다.

 

- The //(두개의 슬래쉬) 문자뒤에 문자들이 표시된다. 새로운 줄은 즉시 처리된다. 백슬래쉬 앞에 새로운 줄이 오지 않으면 주석을 종료한다. 그러므로 이것은 보통 싱글라인 주석이라고 불린다.

 

주석문자는 상수문자, 문자열 리터럴, 주석안에서 특별한 의미가 없습니다. 그래서 첫구문에서 사용되는 주석은 중첩되지 않는다.

728x90
728x90

이 글은 리얼클래스_피너츠_애니메이션 강의 내용을 정리했습니다

 

I'm taking this leaf to school for show and tell.

학교에 이 나뭇잎을 가져가서 물건소개하기 시간에 쓸 거야.

 

We all feel sort of sad when the leaves begin to fall

나뭇잎이 떨어지기 시작할 때 다들 조금 슬퍼져.

 

sort of, kind of

좀.., 음...

 

Stick to it

힘니세요.

728x90
728x90

우선순위큐 특징

-

-

-

-

 

이진힙트리 특징

-

-

-  enqueue 시 일어 나는 절차

- pop시 일어 나는 절차

 

구현해보기

c++

c#

 

728x90
728x90

logN

 

전제

- 이진트리의 탐색의 경우

- n : 전체 데이터 갯수

- x : 탐색 횟수(최악의 경우 특정 데이터를 찾기 위해 탐색해야 하는 횟수)

 

풀이

 

 

 

728x90

'Algorithm > Concepts' 카테고리의 다른 글

길찾기,다익스트라,PathFinding,Dijkstra  (0) 2021.08.19
길찾기,우수법,PathFinding,RightHand  (0) 2021.08.19
DFS,BFS,깊이우선탐색,너비우선탐색  (0) 2021.08.19
Maze,미로  (0) 2021.08.13
Big-O,빅오  (0) 2021.08.13
728x90

특징

-

-

-

-

 

구현하기

c++

c#

728x90
728x90

Graph

 

종류

 - 

 - 

 - 

 

구현방법 3가지와  장담점

 

 

728x90
728x90

이글은 여우강사 최나영 유투브 채널 내용을 정리한 내용입니다.

 

 

I got an 'A'

나 A 받았어.

 

'A' student

우등생

 

I got a good GPA(Grade Point Average)

나 평점을 잘 받았어.

 

What did you study in college?

당신은 대학에서 무슨 전공 했어요?

 

It's a required course.

그건 필수과목이에요.

 

I was a couple of credits(학점) short.

나 몇 학점이 모자라요.

 

It's a multiple choice exam.

그것은 객관식 시험이에요.

 

essay 

서술형 시험

 

I screwed up[스쿠르ㄷ업] on the test.

나 시험 망쳤어.

 

I got into Stanford.

나 스탠포드 합격했어요.

 

get into / get accepted to

대학에 합격하다

 

I passed the class

나 그 수업 통과했어

 

I failed the class

나 그 수업 통과 못했어.

 

728x90

'English > Conversation' 카테고리의 다른 글

여우강사_원밥쓰_5일_연애  (0) 2021.09.20
여우강사_원밥쓰_6일_패션&뷰티  (0) 2021.09.20
해커스톡_밀착영어  (0) 2021.09.20
여우강사_원밥쓰_3일_전화  (0) 2021.08.20
여우강사_원밥쓰_1일_일  (0) 2021.08.18
728x90

배열

-

 

장점

-

-

 

단점

-

-

 

동적배열(C++ stl::vector, C# Collections.Generic.List)

-

-

 

장점

-

-

 

단점

-

-

 

시간복잡도

- push_back =>

- 중간삽입/삭제 =>

- 임의접근=>

 

연결리스트(양방향) (C++ stl::vector, C# Collections.Generic.LinkedList)

-

-

 

장점

-

-

 

단점

-

-

 

시간복잡도

- 중간 삽입/삭제 =>

- 임의접근 =>

 

스택

-

-

 

시간복잡도

- push,pop => 

 

-

-

 

시간복잡도

- enqueue, dequeue =>

 

왜 스택과 큐 사용하는 걸까?

-

-

 

동적 배열 vs 연결리스트

-

-

 

직접 구현해보기

c++ (동적배열, 연결리스트, 스택, 큐)

c# (동적배열, 연결리스트)

728x90
728x90

배열

- 데이터 공간 개수를 고정해서 할당

- 연속된 공간을 할당

 

장점

- 연속된 공간을 사용하기 때문에 임의접근(Random Access)가 빠르다.

 

단점

- 할당된 공간 확장,축소 불가

- 연속된 공간을 사용하기 때문에 중간 삽입/삭제 불가

 

동적배열(C++ stl::vector, C# Collections.Generic.List)

- 연속된 공간 사용

- 일반 배열과 다르게 공간 재할당이 가능하다

- 공간 재할당시 기존 공간보다 더 큰 공간으로 데이터들 복사가 일어난다.

- 최초 할당된 공간이 작으면 초기 데이터 삽입시 재할당이 많이 일어남으로 초기에 실제 사용할 공간보다 여유분을 갖고 크게 할당하는 것이 공간 재할당시 발생하는 오버헤드를 줄일 수 있다.

 

장점

- 연속된 공간을 사용하기 때문에 임의접근(Random Access)가 빠르다.

- 일반 배열과 다르게 공간 재할당이 가능하다

 

단점

- 연속된 공간을 사용하기 때문에 중간 삽입/삭제 불가

- 공간 재할당이 가능하지만, 데이터 복사로 인해 오버헤드가 발생. 데이터 복사할 떄는 기존 공간 보다 더 넓은 임의의 크기(1.5배~2배) 공간을 할당받아 재할당하게 된다. 이로 인해 재할당시 오버헤드는 점점 줄어 들게된다.

 

시간복잡도

- push_back O(1)

- 중간삽입/삭제 O(N)

- 임의접근 O(1)

 

연결리스트(양방향) (C++ stl::vector, C# Collections.Generic.LinkedList)

- 데이터를 노드 개념으로 관리하고 노드는 자신 이전, 이후 노드 정보를 갖는다

 

장점

- 중간 삽입/삭제가 빠르다

 

단점

- 연속된 공간을 사용하지 않으므로 임의접근이 느리다.

 

시간복잡도

- 중간 삽입/삭제 O(1) !물론 임의 삽입/삭제를 위해선 c++의 경우 iterator를 통해서 삽입/삭제할 위치를 알고 있어야 한다.

- 임의접근 O(N)

 

스택

- LIFO(Last In First Out). 후입선출

- 선형 자료구조

- interface : push, pop, peek

- 요소가 하나도 없는 경우 pop이나 peek하면 크래시 발생

- stl::stack은 내부적으로 deque로 구현되어 있다.

- stl:; stack은 c#의 stack과 다르게 반환값이 없다. top()을 이용해서 값을 참조할 수 있다. 이유는 성능상의 문제인것 같다. pop을 할떄 성능의 이점을 위해 참조값을 넘기면 실제로 데이터 공간에서 데이터가 사라지면 문제가 되고, 그렇다고 복사값을 넘기면 성능적으로 떨어진다. 따라서 pop은 공간에서 제거만하고, top은 참조값만 던지는 형태로 구분되어 사용되는 것 같다.

- 동적배열, 리스트로 구현 가능하다.

 

시간복잡도

- push,pop O(1)

 

-FIFO(First In First Out), 선입선출

-interface : enqueue, dequeue,peek

- 요소가 하나도 없는 경우 pop이나 peek시 크래시 발생

- stl::queue는 내부적으로 deque 로 구현되어 있다.

- 순환구조배열, 연결리스트로 구현 가능하다.

 

시간복잡도

- enqueue, dequeue O(1)

 

왜 스택과 큐 사용하는 걸까?

스택과 큐는 자료구조적으로 의미가 명확하기 떄문이다. 예를 들어 '스택을 이용하여 구현 했다'라고 하면 스택이 의미하는 후입선출의 개념으로 구현되었 구나라고 소통의 이점이 생긴다.

 

동적 배열 vs 연결리스트

- 일반적으로 동적배열이 더 많이 쓰인다. 동적 배열은 데이터가 연속적으로 관리된다는 점에서 캐시에 이점도 챙길 수 있기 때문이다.

- 연결리스트는 동적배열과 다르게 c++ stl 기준으로 push_front가 있다 동적배열에서 지원하지 않는 이유는 동적배열을 이용한 중간 삽입/삭제는 느리기 때문에 api 차원에서 지원하지 않는 것이다.

- 연결리스트는 동적배여로가 다르게 c++ 기준으로 []연산자 오버로딩을 지원하지 않는다. 연결리스트의 경우 임의접근이 느리므로 api 차원에서 지원하지 않는다.

- 연결리스트는 랜덤 엑세스가 느린데 어떻게 중간 삽입/삭제는 빠른가? 중간 위치를 알려면 결국 랜덤 엑세스 해야되는거 아닌가? -> c++ 기준 list가 중간 삽입/삭제가 빠른 경우는 iterator를 통해서 삽입/삭제 위츠를 알고 있는 경우이다.

728x90

'DataStructure > Concepts' 카테고리의 다른 글

해시테이블,HashTable  (0) 2021.08.21
레드블랙트리,RedBlackTree  (0) 2021.08.19
자료구조 종류  (0) 2021.08.15
우선순위큐,PriorityQueue  (0) 2021.08.11
이진트리(BinaryTree), 힙트리(BinaryheapTree)  (0) 2021.08.11
728x90
 

Tokens and character sets

Learn more about: Tokens and character sets

docs.microsoft.com

토근과 문자셋

c++ 프로그램 텍스트는 토큰과 공백으로 구성됩니다. 토큰은 컴파일러에게 의미 있는 c++ 프로그램의 가장 작은 요소입니다. C++ 분석기는 이러한 토큰 종류를 인식합니다.

 

- 키워드

- 식별자

- 숫자, 불, 포인터 리터럴

- 숫자, 캐릭터 리터럴

- 사용자 정이 리터럴

- 연산자

- 구두점

 

토큰은 보통 하나 또는 그 이상의 공백으로 구성됩니다.

- 공백

- 수평, 수직 탭

- 새로운 줄

- 양식 피드?

- 주석

 

기초적인 문자 집합 자료

C++ 표준은 기본적인 문자 집합셋을 소스파일에서 사용가능 하도록 합니다. 이 집합 밖에 있는 문자들을 표현하기 위해서는 추가적인 문자들은 유니버셜 캐릭터 네임을 사용해서 지정될 수 있습니다. MSVC 구현은 추가적인 문자들을 허용합니다. 기본 문자 집합 소스는 소스파일에서 사용될 96개의 문자들로 구성되어 있습니다. 이 집합은 공백 문자, 수직 탭, 수평탭, 양식 피드, 새로운 줄 제어문자, 그리고 그래픽문자까지 포함합니다.

 

a b c d e f g h i j k l m n o p q r s t u v w x y z

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

0 1 2 3 4 5 6 7 8 9

_ { } [ ] # ( ) < > % : ; . ? * + - / ^ & | ~ ! = , \ " '

 

마이크로소프트 관련

MSVC는 기본 문자 집합 소스로  $문자를 포함합니다. MSVC를 사용하면 파일 인코딩에 따라 소스파일에 추가 문자 집합을 사용할수 도 있습니다. 기본적으로 비주얼 스튜디오는 기본 코드페이지를 사용하여 소스파일을 저장합니다. 소스파일이 지역 로컬 코드페이지나 유니코드로 페이지를 사용하여 저장되면 MSVC는 당신에게 당신 소스코드의 코드 페이지에서 문자들을 사용하게 합니다. 기본 소스 문자집합에서 명시적으로 허락되지 않는 제어 코드를 제외하고요. 예를 들어 당신은 일본 코드페이지를 사용하여 파일을 저장하면 주석, 식별자, 문자열 리터럴에 일본 문자를 사용할 수 있습니다. MSVC는 적당한 멀티바이트로 번역되지 않거나 유니코드 코드 포인트로 전환된지 않는 문자열 순서를 허락하지 않습니다. 컴파일러 옵션에 따라 허용되는 일부 허용된 문자들이 식별자에 나타지 않을 수도 있다. 더많은 정보를 여길 보세요.

식별자

 

범용 문자 이름

C++ 프로그램은 기본 문자집합 소스에서 지정된 것들보다 더 많은 문자를 사용하기 때문에, 당신은 이러한 문자들을 범용 문자 이름을 사용하여 편리하게 지정할 수 있습니다. 범용 캐릭터 이름은 유니코드 포인트를 나타내는 문자들의 시퀀스로 구성된다. 두개의 형식을 갖는다. U+NNNNNNNN 형식의 유니코드 포인트를 나타내려면 \UNNNNNN을 사용해라. 여기서 NNNNNNN은 8진수, 18진수 코드 포인트 숫자이다. U+0000NNNN형식의 유니코드 포인트를 나타내려면 4진수 \uNNNN을 사용해라.

 

범용 문자 이름들은 식별자, 문자열, 문자 리터럴에 사용될 수 있다. 범용문자이름은 0xD800-0xDFFF 범위의 대리 코드 포인트를 나타내는데 사용되지 않습니다. 대신 희망하는 코드 포인트를 사용하세요. 컴파일러는 자동적으로 요구되는 대리품을 생성합니다. 추가적인 제한들은 식별자에 사용되는 범용 문자 이름에 적용됩니다. 더 많은 정보를 원하시면 여길 보세요. 식별자 그리고 문자열 과 문자 리터럴.

 

마이크로소프트 관련

마이크로소프트c++ 컴파일러는 범용 캐릭터와 리터럴 양식 교대로 다룹니다. 예를 들어 당신은 범용 문자 이름 양식을 사용한 식별자를 선언할 수 있고, 리터럴 양식 안에서 그것을 사용할 수 있습니다.

auto \u30AD = 42; // \u30AD is 'キ'
if (キ == 42) return true; // \u30AD and キ are the same to the compiler

윈도우 클림보드에 학장된 문자양식은 어플리케이션 로컬 세팅과 관련있습니다. 다른 어플리케이션으로 부터 당신에 코드에 이러한 문자열들을 자르고 붙여넣기하면 아마도 예기지치 못한 캐릭터 인코딩을 보여줄 것입니다. 이것은 당신 코드에서 보이지 않는 원인으로 분석 에러를 발생 시킬 것입니다. 우리는 확장된 문자들을 붙여놓기 하기전에 유니코드 코드 페이지에서 당신이 당신의 소스 파일 인코딩파일을 세팅하는 것을 추천합니다. 우리는 또 확장 문자들을 생성하는 문자맵 앱이나 IME를 사용하는 것을 권장합니다.

 

문자셋 실행

문자셋 실행은 컴파일된 프로그램에 나타날 수 있는 문자들이나 문자열를 나타나게 합니다. 이러한 문자셋은 소스파일에서 혀용된 모든 문자들과 alert, backspace,carriage return, null character를 나타내는 제어문자로 이루어져 있습니다. 문자셋 실행은 특정한 표현식을 갖고 있습니다.

 

 

728x90
728x90
 

Lexical conventions

Describes basic elements of C++ programs such as keywords, identifiers, literals, and character sets.

docs.microsoft.com

사전규칙

이 섹션은 c++ 프로그램의 근본적인 기능들을 소개 합니다. 당신은 구문을 구성하고, 정의, 선언 등 프로그램을 완성하는데 사용된 "사전 요소" 또는 "토근"과 같은 요소들을 사용합니다. 다음 사전 요소들은 이장에서 얘기됩니다.

 

Tokens and character set (토큰 및 문자집합)

Comments (논평,언급,주석)

Identifiers (식별자)

Keywords

Puncuators (구두점)

Numberic, boolean, and pointer iterals

String and character Literals

User-defined Iterals

 

C++ 소스파일이 어떻게 분석되는지 더 많은 정보를 얻으려면 , 변화단계를 확인하세요.

 

728x90
728x90

이글은 여우강사 최나영 유투브 채널 내용을 정리한 내용입니다.

 

 

What do you do?

직업이 뭐니?

 

That's my side job

그것 부업이야.

 

I work for peanuts

돈 엄청 조금 받고 일해요.

 

I'm a fast learner.나는 일을 빨리 배워요.

 

I'm a slow learner.

나는 일을 늦게 배워요.

 

What time do you get off work?

일 몇시에 끝나?

 

I usually get off work around 6.

나는 보통 6시에 일이 끝나.

 

I'm not cut out for this job.

나는 이일에 적합하지 않아요. / 나는 이일에 소질이 없어요.

 

This is not my forte[폴테]

내 분야가 아니야. / 내 강점이 아니야.

 

I pulled an all-nighter.

밤 새서 일했어. / 밤 새서 공부 했어./ 밤 새서 게임했어.

 

We're short-handed.

우리는 일손이 모자라요.

 

There's too much on my plate.

할일이 너무 많아요.

 

 

 

 

728x90

'English > Conversation' 카테고리의 다른 글

여우강사_원밥쓰_5일_연애  (0) 2021.09.20
여우강사_원밥쓰_6일_패션&뷰티  (0) 2021.09.20
해커스톡_밀착영어  (0) 2021.09.20
여우강사_원밥쓰_3일_전화  (0) 2021.08.20
여우강사_원밥쓰_2일_공부  (0) 2021.08.18
728x90

해커스 오픽 강의 내용을 정리한 내용입니다.

 

Q1

In your background survey, you indicated that you like going to beaches. Where is your favorite beach and how often do you go there? Why do you like it?

A1

My favortie beach is Seoul Beach. It's within walking distance of my house. The beach is very beautiful. I love golden sand and seashells on the beach. Also, the beach has a convenience store where I can buy chicken and beer. I love having chicken and beer while enjoying the view. It's so delicious. I'm planning to go again this weekend.

 

Q2

What items do you pack from a beach trip? Why do you take them with you? Provide as many details as possible

A2

I take serveral things when I go to a beach. First I take my cellphone. Listening to music while walking along the beachside helps me be more active. Oh, and a water botttle is a must, When I go to a beach. I drink water whenever I am thirsty. Last but not least, I take things to eat like chocolate and snacks. When I go to a beach, I wear a beach wear and a windbreaker.

 

728x90
728x90

선형 구조

- 자료를 순차적으로 나열한 형태

- 배열, 연결 리스트, 스택, 큐 등

 

비선형구조

- 하나의 자료 뒤에 다수의 자료가 올 수 있는 형태

- 트리, 그래프 등

 

728x90
728x90

0. 고정 질문, 고정 영어스크립트 연습(현재)

 

1.샘플 질문 가정

 

2.한국말로 스토리라인 지정

 

3.스피킹 패턴 연습

 

4.패턴을 연결해서 영어 스크립트로 읽도록 연습.

 

 

 

728x90
728x90

해커스 오픽 강의 내용을 정리한 내용입니다.

 

표현

- I went to a concert by ---

- The consert was at ---

- I went to the concert with ---

- I like this palce because ---

- I went to the concert with ---

- I go to plays

- I always --- before/after the play.

- The most memorable concert was

- The concert made me feel ---

- Listening to his songs makes me full of life.

- It helps me relieve my stress and clear my head.

- On average, I go to a concert once a month

- I go to a concert every once in a while

- Once, I went to A's concert,

- I am a concertgoer.

- I was so abosrbed in the music.

 

Q1

You indicated in the survey that you enjoy going to concerts. Tell me about a concert that you have been to recently. Where was the concert held and who did you go with? Did you enjoy the concert?

A1

The last time I went to a concert was a few months ago. I went to BTS's concert. BTS is a popular boy band in korea who became famous because of the song called fake love. I went there with my friend Sam because we have a similar taste in music. Before going to a concert, we read reviews and reserved tickets online. During the concert, we sang along to songs and danced to the music. After the concert, I wrote a review of the concert on my instagram. It was such a great concert!

 

Q2

Which theater or auditorium do you like the most? Where is it? What do you like about it? Tell me about a show that you have seen at this venue.

A2

My favorite place is the olympic stadium. It is in Seoul. I like this place because it is close to my house and has great facilities. Oh, and I have a membership card so I can get a discount. The last time I went there was a few months ago. I went to see BTS's concert. I am planning to go there in the future.

 

Q3

How often do you go to plays and who do you like to go with? What do you do before and after a play? Provide as many details as possible.

A3

I think I usually go to musicals once a month. I usually see them with my friend Sam because he and I have a similar taste in music. I always read reviews on the internet and reserve tickets before the musical. Then I buy popcorns and drinks at a snack bar. After the musical, Sam and I go for dinner and talk about the performance. When I go home, I sometimes write a review of the musical on my blog. I think watching a musical is a great stress reliever.

 

Q4

Tell me about the most memorable concert you've been to. Who was the performer? What made this concert so special?

A4

I like pop music the best. My all-time memorable concert was BTS's concert. BTS is a popular boy band in korea who became famous because of the song called fake love. I loved this concert because their performance was really beautiful and fantastic. I was really touched by their songs. The concert made me feel full of energy. I'll never forget that evening.

728x90

'English > OPIC' 카테고리의 다른 글

OPIC_해커스인강_09_해변가기  (0) 2021.08.16
OPIC 학습 계획  (0) 2021.08.15
OPIC_해커스인강_06_영화관람  (0) 2021.08.14
OPIC_해커스인강_05_동네 및 이웃  (0) 2021.08.13
OPIC_해커스인강_04_사는곳[필수]  (0) 2021.08.12
728x90

해커스 오픽 강의 내용을 정리한 내용입니다.

 

표현

- I like --- the best

- I like them because ---

- The most memorable movie I've senn is ---

- --- had the leading role

- She is my favorite actor because she ---

- While watching the movie, I felt ---

- I usually --- befroe the movie.

- After the movie, I usually ---

- I usually go with my friends or family but when they are busy I go by myself.

- It's brand-nw theater

- I am moviegoer. I am a movie fanatic[페네릭]

- It has a plot-twist 반전이 있다.

 

 

Q1

In your background survey, you indicated that you enjoy watching movies. What is your favorite type of movie and why? Please provide as many details as possible.

A1

I like horror films the best. Horror movies are very scary[스케어리]. These types of movies usually feature monsters like vampires or zombies. I like them because they relieve[릴리브] my stress. When I watch a horror movie, I scream loudly and often. This makes me feel much more relaxed after the movie is finished. The most memorable movie I've seen is Night of the Living Dead.

 

Q2

Who is your favorite actor? What movies has this actor starred in? What do you like about him or her?

A2

I like many actors, but I like Rachel McAdams[레이첼 매 게덤스] the best. She's my favorite actress because she can play many different character types. She also has a very unique face. The most memorable movie I've seen is NoteBook. Rachel McAdams had the leading role. She was very beautiflul in the movie.

 

Q3

What is your routine when you go to the theater? What do you do before watching movies? What about after? Please describe your routine in detail.

A3

I think I usually go to a movie theater once a month. I usually see them with my friend, Pia because she and I have a simliar taste in movies. I always read reviews on the[디] internet and reserve tickets before the movie. Then I buy popcorns and drinks at a snack bar. After the movie, Pia and I go for dinner and talk about the movie. When I go home, I sometimes write a review of the movie on my blog. I think watching a mvoie is a great stress reliever.

 

Q4

Talk About a movie you remember best. What was it about? Who was in it? How did you feel when watching it?

A4

The most memorable movie I've watched is About Time. It's an American movie released in 2013. It is about a young man with a special ability to travel time. He tries to change his past in order to improve his future. What makes this movie interesting is that is is based on a famous fiction. When I feel down or depressed, I watch this movie. This movie taught me a lesson that every momont is very important in your life. While watching the movie, I was touched and impressed. I strongly recommend this movie to you.

728x90

+ Recent posts