본문 바로가기

전체 글213

멀티 스레드 환경에서 소켓 프로그래밍 소켓OS 내부에는 "프로토콜 스택"이 있는데, Transport 계층이라 불리는 TCP 또는 UDP는 Applicaton 계층에서 송수신할 데이터를 받아서 해당 프로토콜에 맞게 작업을 하고, 인터넷에서 데이터를 송수신하기 때문에 헤더 정보를 다시 Internet 계층인 IP로 묶고, IP 프로토콜이 속한 계층 아래에 있는 데이터 링크 계층인 랜카드의 Mac 주소를 헤더 정보로 다시 묶은 다음 최종적으로 물리 계층에 있는 통신 케이블 같은 장비를 통해서 데이터를 송수신한다.노드(노트북, 휴대폰 ..등의 전자기기)들이 서로 데이터를 송수신하기 위해서 "소켓"이라는 것을 이용한다.즉, 소켓을 만든다는 의미는 데이터를 어떻게 송수신할 건지에 대한 프로토콜 종류(TCP, UDP), 송신 측과 수신 측의 IP 주소.. 2024. 5. 18.
애니메이션 평타 캔슬 or 모션 캔슬 LOL을 기준으로 애니메이션 평타 캔슬 적용하기참고 : https://blog.naver.com/roo4803/220827932868 공격버튼 클릭시1. 플레이어가 공격 애니메이션을 실행중이라면 대기2. 플레이어가 공격 애니메이션을 실행중이 아니라면 공격 상태로 변환public void Handle(PlayerController playerController){ // StopAttack == true 경우만 공격 애니메이션 실행 if(_playerController.StopAttack){ AnimationAttackPlay(GetComponent()); } }void AnimationAttackPlay(Animator anim){ _playerController.StopAttack = fa.. 2024. 5. 4.
재귀(recursion) *** 재귀란?하나의 함수에서 자기 자신을 다시 호출해 작업을 수행하는 알고리즘 재귀를 이용해 문제를 풀때는 수학적 귀납법을 이용하면 간결하게 풀 수 있다.제일 앞의 도미노를 쓰러트리면 모든 도미도는 쓰러질 것이다.그런데 왜? 모든 도미노가 쓰러지는가를 설명해보자 첫번째 설명 방법은 제일 앞에 있는 1번 도미노가 쓰러지면 2번도미노, 3번도미노... 순차적으로 쓰러진다는 설명방법이고 두번째 설명 방법은 1번 도미노가 쓰러진다. K번 도미노가 쓰러지면 K+1번 도미노도 쓰러진다 결국에는 모든 도미노가 쓰러진다는 귀납적 방식을 이용한다.  절차지향적 사고방식)// N~1까지 차례대로 출력void func1(int val) { if (val == 0) return; cout  func1(10000...) .. 2024. 5. 2.
백준 5427 1. 문제이해 매초마다 불은 상하좌우 빈공간으로 이동 상근이도 매초마다 상하좌우로 이동 가능 벽쪽으로 이동 X, 불이 있는 칸 또는 이제 불이 붙으려는 칸으로 이동 X 빌딩을 탈출하기 위한 최소 시간을 구하기 2. 문제분석 지도(board), 불이동시간(fireMoveT), 상근이 이동시간(playerMoveT) 총 3개의 배열 필요 불이붙는 이동시간을 계산할때 불이 최초에 있는 지점은 0초이고 0이상인 경우 불이 있는 곳이기 때문에 체크 X 상근이의 이동시간(PT)이 불이 붙는시간(FT)보다 무조건 작아야지 이동가능 - 지도에 불과 상근이의 위치를 나타내면서 불이 있는 모든 위치를 큐에 넣음 - 큐를 통해서 지도 전체에 불이 붙는 시간을 모두 계산함 - 상근이의 시작위치를 큐에 넣음 - 상근이가 이동하.. 2024. 5. 1.
백준 7562 문제분석 체스판 길이(size) 8 -> 8 * 8  나이트의 최초 시작 지점(startPoint) 나이트가 이동하려고 하는 칸(endPoint) --> endPoint까지 최소 몇번만에 이동할수 있는지? 0. 시작지점을 큐에 넣음  1. 나이트가 이동할 수 있는 모든 방향을 미리 지정해둠  어떻게 지정할 것인가?  총 8가지 방향  ex) 0,0 기준으로 생각해보기 (x : 행, y : 열)  1. 왼쪽상단 대각선(열감소, 행감소) -> 상(행감소) x -> -2, y -> -1  대각선(열감소, 행감소) -> 좌(열감소) x -> -1, y -> -2 2. 오른쪽상단 대각선(열증가, 행감소) -> 상(행감소) x -> -2, y -> +1  대각선(열증가, 행감소) -> 우(열증가) x -> -1, .. 2024. 4. 30.
투사체 사정거리 계산 원점에서 시작하지 않는 벡터의 크기를 구하는 방법을 알아보자왜냐하면 캐릭터가 이동할 때 마다 투사체의 시작 위치가 변하기 때문에 그에 맞춰서 투사체의 이동거리를 계산해야 된다. V2의 시작 좌표는 (1, 2) 끝 좌표는 (4, 6) 이다. 끝 좌표에서 시작 좌표를 빼고 루트를 씌워서 크기를 구하면 5가 나온다.마찬가지로 V1의 크기도 5가 나오는데, 원점에서 시작하지 않는 V2의 크기를 구하기 위해서 x축 방향으로 -1 감소시키고 y축 방향으로 -2 감소시켜서 원점부터 시작하는 벡터를 만들고 크기를 구한다는 것을 알수 있다. 즉, 원점에서 시작하지 않는 벡터의 크기를 구하기 위해서는 "벡터의 시작 좌표" - "벡터의 끝 좌표" 이후 각 x, y, z .. 값을 제곱시킨 이후 루트를 씌워서 크기를 구하면 .. 2024. 4. 28.