Mgcllee

[백준][1987] 알파벳

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

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

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

[네트워크] 논블로킹 소켓

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

[네트워크] 블로킹 소켓

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

[백준][2573] 빙산

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

[백준][12865] 평범한 배낭

이 포스트는 백준 사이트의 평범한 배낭 문제 풀이입니다. 문제 해결 과정 이 문제는 다이나믹 프로그래밍(DP)로 해결할 수 있는 대표적인 문제입니다. 준서는 최대 K 까지 배낭에 담을 수 있으므로 K 이하인 물건은 모두 담을 수도 있습니다. 따라서 DP 테이블을 사용하여 N개의 물건을 최대 K 까지 담았을 때의 값을 구하였습니다. ...