목록전체 글 (244)
지우너
문제 폭탄과 폭탄을 둘러싼 지역을 제외한 지역의 갯수를 return하는 문제. 계획 세우기 n은 1이상 100 이하이기 때문에 board의 최대 크기는 100*100이 된다. board를 완전탐색(2중 반복문을 이용)? 한다면 10000*10000번, 즉 100,000,000번 연산하게 된다. 제한 사항에 시간제약이 없기 때문에 이 방법을 써도 문제가 없을 것 같다. 하지만 이런 유형의 문제에서 주로 dfs/bfs를 사용했던 거 같다. dx, dy 좌표를 이용해서 board 범위를 벗어나지 않을 시 해당 경로를 선택하는 느낌의 알고리즘이었던 거 같다. 비슷한 문제 백준 2178번 미로 탐색 https://www.acmicpc.net/problem/2178 백준 7576번 토마토 https://www.ac..
문제 https://school.programmers.co.kr/learn/courses/30/lessons/120910 내가 쓴 코드 #include #include #include using namespace std; int solution(int n, int t) { int answer=n; for (int i=0; i
1. Session #3 SendAsync() 호출 횟수 줄이기 지난 시간에 했던 내용 중 하나는 recvArgs와 sendArgs를 사용하는 방법이었다. 이 부분이 굉장히 중요한데 나중에 C++서버를 만들 때도 진짜 비슷하게 만들게 될 거니까 이 부분을 유심히 살펴보면 좋을 것 같다. 중요했던 것 중 하나는 SetBuffer를 하는 부분 Receive 같은 경우 초기에 recvArgs.SetBuffer(new byte[1024], 0, 1024); 이렇게 빈 버퍼를 연결만 해주었다. 그러면 나중에 클라이언트 쪽에서 데이터를 우리에게 보내고, 그 데이터가 우리가 연결한 버퍼에 저장이 된다. Send 같은 경우, 얘도 같은 인터페이스인 SetBuffer를 사용하기는 하는데, 얘가 SetBuffer를 하는 ..
1. Session #1 저번 시간에는 Listener class를 만들어서 Accept를 비동기로 만들었다. Session #1에서는 Receive() 비동기로 만들어 본다! 1.1. 지난 시간에 들 수 있는 의문점 1.2. Session 클래스에 Receive 옮기기(비동기로 만들기) 1.2.1. RegisterRecv() Listener를 만들 때와 동일했던 부분은 빨간 네모로 코드에 표시+빨간 테두리 설명 / 다른 부분(Socket 생성)은 초록색 박스로 표시했다. 박스로 표시한 부분 외에도 _listenSocket.Bind(endPoint); _listenSocket.Listen(10); 과 같이 Accept에 필요한 요소나 recvArgs.SetBuffer(new byte[1024], 0, 1..
앞에서 그랬던 것처럼 내용을 정리한 PPT로 내용을 대체한다... 1. 소켓 프로그래밍 1.1. 개념 클라이언트 클라이언트가 서버에 접속을 하면 서버에서 이런저런 처리를 한 다음 세션을 하나 만들어주는데, 그 후 모든 통신들은 세션을 통해서 이루어진다. 서버 일반적으로 연락을 주고받는 용도가 아니라 그냥 문지기 역할을 하는 Listener 소켓을 하나 준비한다. bind라는 함수를 통해 식당주소(서버주소)와 번호(port)가 무엇인지 Listener 소켓에 연동시킴 listen이라는 함수를 통해 클라에게서 접속요청을 받을 수 있도록 준비 접속 요청이 오면 accept 함수를 이용해서 안내해줌 accept가 끝나면 클라 세션 하나가 만들어지는데, 그 세션에도 소켓이 있다. 클라이언트와 대화할 때는 클라이언..
드디어 섹션1 멀티쓰레드 프로그래밍의 마지막 강의 정리를 올린다... TLS를 완벽하게 이해하고 싶어서 열심히 마이크로소프트 문서를 읽어봤으나(정확히 말하자면 문서에 나온 TLS 작동방식 다이어그램을 이해하고 싶었다...), OS 지식의 부족이 문제인지 잘 이해가 가지 않았다. 지금 보고 있는 인프런 강의가 끝나면 대학교 때 배웠던 OS 필기를 다시 보면서 복습해야 할 것 같다... 1. TLS게임을 예로 든다면 게임로직, DB, 클라이언트 세션 관리, 로그 찍기 등 다양한 분야들이 나뉜다. 그런데 얘네들이 코드 로직적으로 생각해보면 어느 정도 연관되어 있다. 예를 들어 게임 로직을 실행해서 아이템을 강화하는 작업을 한다면 이걸 DB에 저장해야 하니까 DB에도 갔다 와야 하고, 성공적으로 뭔가 이뤄졌으면..