| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
- member function pointer
- pointer to member data
- placement new
- dynamic_cast
- vector size
- increment operator
- constructor
- new&delete
- operator overloading
- std::endl
- diamond inheritance
- return by reference
- 더 지니어스 양면포커
- virtual function
- std::vector
- virtual function table
- virtual destructor
- std::ostream
- discord bot
- virtual inheritance
- vector capacity
- C++
- delete function
- std::cout
- c++ multi chatting room
- this call
- c++ basic practice
- conversion constructor
- base from member
- suffix return type
- Today
- Total
목록Home (101)
I'm FanJae.
줄거리와 서술 방식에 대하여더보기[줄거리] 달링턴 홀에서 평생을 지내온 집사 스티븐스가 과거 달링턴 홀에서 함께 일했던 켄튼 양을 찾아가는 것이 주된 내용이다. 스티븐스는 직업에 대한 깊은 자부심과 헌신을 가지고 있는 인물로 묘사된다.스티븐스에게 있어서 위대한 집사라는 것은 '품격'이 있는 집사라고 생각하며, 스티븐스는 작중 자신의 회상을 통해서 여러번 집사가 갖춰야 할 '품격'이 무엇인지에 대해 세세하게 설명한다.책의 전개 자체가 현재보다는 달링턴 홀에서의 삶을 회상하는 이야기를 중심으로 다뤄지며, 위대한 집사라는 것은 어떤 외부 요인에도 흔들리지 않고, 자신의 주인을 위한 봉사해야 한다는 신념으로 살아간다. [서술 방식]스티븐스의 관점에서 이야기를 서술하지만, 스티븐스가 직접적으로 자신의 감정을 드러..
1. 바이트 저장 순서 (Byte Order)- 컴퓨터는 데이터를 메모리에 저장할 때 바이트(Byte) 단위로 나눠 저장한다.- 여러 바이트로 구성된 데이터 타입은 인접한 메모리 주소에 연속적으로 저장된다.- 이때,여러 바이트로 구성된 데이터를 메모리에 어떤 순서로 저장할지 정하는 방식을 엔디안(Endian)이라고 한다. 2. 엔디안(Endian)- 앞서 설명한 바와 같이 Endian은 데이터가 메모리에 저장되는 순서를 의미한다.- Endian은 CPU의 아키텍처의 데이터 저장 방식 설계에 따라 결정된다. 일반적으로, 리틀 앤디안(Little Endian)과 빅 앤디안(Big Endian)의 두가지 방식이 존재한다. 2-1. 빅 엔디안(Big Endian) 방식- 빅 엔디안 방식은 가장 상위 바이트를..
1. 주요 구현 로직 - 카드 비교 로직- CALL, RAISE 상황에 따른 처리2. Server 처리- 카드 비교 로직GameType Room_Manager::compareCard(const SOCKET socket, BetType bet_type){ BetType bet_type_info[2] = { BetType::NONE, BetType::NONE }; int user_card_info[2] = { 0 }; int vs_card_info[2] = { 0 }; for (auto& pair : users) { auto& user = pair.second; if (pair.first == getUserNumberFromSocket(socket)) { bet_type_info[0] = user..
1. 주요 구현 로직 (Server)- 게임 시작- 칩 정보 업데이트 및 기본 베팅 처리- 카드 배분- 베팅 처리2. Server 처리 (게임 시작 Event)2-1. 게임 시작if (roomManager->All_User_Start_Ready_State()){ send_message = GAME_CLIENT_EVENT + START + DONE; roomManager->broadcast_Message(send_message, socket, TargetType::ALL); gameInit(socket, InitType::INIT); send_message = GAME_CLIENT_EVENT + GAME_INIT; roomManager->broadcast_Message(send_message, socket..
1. 문제 링크https://www.acmicpc.net/problem/3015 2. 문제 접근- 왼쪽에서 오른쪽으로 볼 때, A와 B가 서로 볼 수 있으려면 A 또는 B보다 키가 큰 사람이 없어야 한다.- 2 4 1 2 2 5 1이면 다음과 같다.- (2,4) (4,1) (4,2) (4,2) (4,5) (1,2) (2,2) (2,5) (2,5) (5,1)- 어떤 수(왼쪽 수) 입장에서 자신보다 큰 수가 등장했다는 것은 해당 인원들은 더 이상 쌍을 만들 수 없다. - 그 수를 기준으로 모두 pop()한다. pop()한 개수 만큼 더해준다. (pop된 수와 쌍을 만들 수 있음.)- 오른쪽 수의 입장에서 왼쪽수가 자신보다 크다면, 적어도 왼쪽에 있는 수 중에는 쌍을 만들 수 있는건 1개다.- 같은 수일때는 ..
1. 주요 구현 로직 (Client)- 게임 시작- 칩 정보 업데이트 및 기본 베팅 처리- 카드 배분- 베팅 처리2. Client 처리 (게임 시작 Event)2-1. 게임 시작 private void ChattingRoom_Form_KeyDown(object sender, KeyEventArgs e) { if (this.isGamePlaying == false && IsSocketConnected(socket)) { if (e.KeyCode == Keys.F5 && My_Ready.Text == "") // F5를 눌렀을때 { string request = Constants.ROOM_EVENT + Constants.USER_READY_S..
1. 문제 링크https://www.acmicpc.net/problem/17298 2. 문제 접근- 왼쪽에서 오른쪽으로 볼때, 자신보다 큰 수 중에서 가장 가까운(왼쪽에 있는 수)를 구하면 된다.- 어떤 수를 기준으로 자신보다 큰 수가 등장했다는 건 그 수의 정답이 확정된다.- 즉, 큰 값이 나타날때까지 stack에 넣어주고 대기한다. 자신보다 큰 수가 등장하면 그 수가 정답이 된다.- 3을 처음 넣을때는 아무것도 없으므로, 바로 넣어준다. 이후 들어오는 값인 5는 스택에 있던 값인 3보다 크므로 오큰수다.- 이에 따라서, 3을 빼주고, 3에 대한 오큰수는 5임을 알 수 있다. - 2의 경우는 5에 대한 오큰수가 될 수 없기 때문에 그대로 넣는다.- 마지막으로 들어오는 7은 2보다 크기 때문에 2의 오큰..
1. 문제 링크https://www.acmicpc.net/problem/6198 2. 문제 접근- 개인적으로 문제는 Stack으로 풀면 쉽게 풀리는 것을 깨닫기가 어렵다.- Stack까지 생각해냈다면, 그 뒤에는 Stack의 특징을 잘 이용해서 풀 수 있다.- 왼쪽 건물에서 오른쪽 건물을 볼 수 있으려면 반드시 빌딩의 높이가 더 낮아야 한다.- 즉, 오른쪽 건물 중에 자신보다 높은 건물이 하나 등장하면, 이 건물이 더 이상 확인 가능한 건물은 없다.- 이를 잘 이용하면 stack을 이용해서 풀 수 있다. - 처음 10을 넣을때는 바로 넣는다. 3을 넣을때는 3이 10보다 작다. - 즉, 10의 관점에서는 3을 볼 수 있기 때문에 값을 1증가한다.- 7을 넣을때는 7이 3보다 크기 때문에, 3을 빼내고 ..
1. 문제 링크https://www.acmicpc.net/problem/2493 2. 문제 접근- 특정 i번째 탑은 레이저 수신을 위해서는 i-j (j 해야 한다.- 자신보다 높은 탑을 찾는 과정에서 존재하는 낮은 탑은 관심 없다.- 즉, 자신이 왼쪽으로 쏘는 시점에서 높이가 높은 탑이 있으면 해당 탑에 레이저를 쏴야하고, 없으면 쏠 대상이 없다. - 6은 아무것도 없기 때문에 레이저를 쏠 대상이 없다.- 9는 6보다 크기 때문에 6으로 레이저를 쏘는 것이 불가능하다.※ 이 시점에서, 6을 빼도 되는 이유는 6보다 높이가 더 큰 9가 오른쪽에서 왼쪽으로 쏠 모든 레이저를 받아내기 때문이다. - 5는 9를 향해 레이저를 발사할 수 있다. 하지만 7은 5에게 레이저를 발사할 수 없다.- 따라서 자신보다 낮은..
1. 문제 링크https://www.acmicpc.net/problem/1874 2. 문제 접근- 특정 수가 나오기 위해서는 우선, 그 수보다 작은 값이 먼저 등장해야한다.- 예를들어, 5라는 숫자가 나오기 위해서는 1,2,3,4가 먼저 등장해야 한다. (이미 나간 경우를 포함한다.)- 다음 나와야 할 값을 기록해서, 입력받은 수보다 작으면 계속 스택에 넣어준다. - 위와 같은 형태를 띈다.- 이때, 스택의 꼭대기 값을 확인해서 같은 값이면 뺀다. - 만약 같은 값이 아닌 경우, 연산이 불가능한 상황이므로, 이를 처리해주면 된다. 3. 문제 풀이- 현재 들어가야 하는 값과 입력 받은 값을 비교한다.- 만약 입력 받은 값이 더 크다면, stack에 입력 받은 값까지 push한다.- 이후, 스택에 top ..