Mgcllee

[네트워크] EPoll의 개념

이 포스트는 “게임 서버 프로그래밍 교과서”를 참고하여 작성된 포스트입니다. 이전 포스트에서 Poll() 함수를 언급을 했었습니다. 포스트의 마지막에 설명한 Poll() 함수의 단점으로 반복문을 사용한 소켓 전체 순회가 있었습니다. 이 전체 순회로 인해 실시간 처리가 중요한 게임 서버에서는 적합하지 않을 수 있습니다. 따라서 처리 속도가 중요...

[백준][1806] 부분합

이 포스트는 백준 사이트의 부분합 문제 풀이입니다. 문제 해결 과정 이 문제를 처음 시도하였을 때, 주어진 배열을 정렬하고 정렬된 배열을 순차 탐색하면서 총 합이 S가 넘은 순간의 길이를 반환하려고 했습니다. 그러나 이러한 해결 방법의 문제점은 최단 길이가 아니라 최초 적합 길이가 반환된다는 점입니다. 예를들어, N과 S가 10, 20...

[OS] Linux의 기본 개념

이 포스트는 개인 학습을 기록한 내용을 담고 있어 추후 수정될 수 있습니다. 리눅스란 리누즈 토발즈라는 개발자에 의해 만들어진 컴퓨터 운영체제 이름이 리눅스입니다. 리눅스는 현재 유명한 오픈소스 프로젝트 중 하나이며, 많은 사람들이 개발에 참여하고 있습니다. 리눅스의 구조 리눅스의 구조는 아래와 같이 크게 4가지로 분류할 수 있습니다....

[백준][1987] 알파벳

이 포스트는 백준 사이트의 알파벳 문제 풀이입니다. 문제 해결 과정 이 문제는 DFS와 아스키 코드를 사용한 방문 기록 배열을 이용하여 해결할 수 있습니다. DFS를 재귀적으로 실행하면서 방문한 거리까지를 최댓값과 비교하면 됩니다. 여기서 중요한 것은 방문했던 알파벳은 다른 위치에 있더라도 재방문이 불가능하다는 것 입니다. 따라서 맵...

[백준][2206] 벽 부수고 이동하기

이 포스트는 백준 사이트의 벽 부수고 이동하기 문제 풀이입니다. 문제 해결 과정 이 문제는 일반적인 탐색 문제와 다른 방문 기록을 사용해야 해결할 수 있습니다. 문제의 설명처럼 막혀있는 벽을 부수고 이동하면 최단거리가 갱신될 때, 벽 1개를 부술 수 있습니다. 여기서 2차원 배열의 방문 기록을 사용하면 현재 이동중인 칸이 벽을 부수고 ...

[네트워크] 논블로킹 소켓 사용하기(Select, Poll)

이 포스트는 “게임 서버 프로그래밍 교과서”를 참고하여 작성된 포스트입니다. 논블로킹 소켓이란 이름 그대로 블로킹하지 않는 소켓입니다. 이번 포스트에서는 논블로킹 소켓은 무엇이고 왜 필요한지에 대해 작성해 보겠습니다. 블로킹 소켓에 대한 내용은 다른 포스트에서 다룹니다. 막힘없는 소켓 통신 송신자와 수신자가 각각 1명뿐인 일대일 ...

[네트워크] 블로킹 소켓

이 포스트는 “게임 서버 프로그래밍 교과서”를 참고하여 작성된 포스트입니다. 블로킹 블로킹(Blocking)이란 스레드가 대기하는 현상을 의미합니다. 예를들어, 파일을 읽는 함수를 호출하면 스레드는 처리 요청을 운영체제에 요청하고 응답이 올 때까지 대기합니다. 이처럼 스레드가 대기하는 현상을 모두 블로킹이라고 합니다. 블로킹 상태에 있는 스...

[백준][2573] 빙산

이 포스트는 백준 사이트의 빙산 문제 풀이입니다. 문제 해결 과정 이 문제는 BFS와 시뮬레이션으로 문제를 해결할 수 있습니다. 여기서 가장 중요한 것은 BFS를 사용해서 무엇을 탐색할지 입니다. 입력받은 모든 칸을 순회하면서 주위에 얼음을 확인할 경우, 시간이 오래걸리기 때문에 얼음 위치만 저장하는 큐를 저장하고 큐에서 하나씩 꺼내...