[백준][2206] 벽 부수고 이동하기
이 포스트는 백준 사이트의 벽 부수고 이동하기 문제 풀이입니다. 문제 해결 과정 이 문제는 일반적인 탐색 문제와 다른 방문 기록을 사용해야 해결할 수 있습니다. 문제의 설명처럼 막혀있는 벽을 부수고 이동하면 최단거리가 갱신될 때, 벽 1개를 부술 수 있습니다. 여기서 2차원 배열의 방문 기록을 사용하면 현재 이동중인 칸이 벽을 부수고 ...
이 포스트는 백준 사이트의 벽 부수고 이동하기 문제 풀이입니다. 문제 해결 과정 이 문제는 일반적인 탐색 문제와 다른 방문 기록을 사용해야 해결할 수 있습니다. 문제의 설명처럼 막혀있는 벽을 부수고 이동하면 최단거리가 갱신될 때, 벽 1개를 부술 수 있습니다. 여기서 2차원 배열의 방문 기록을 사용하면 현재 이동중인 칸이 벽을 부수고 ...
이 포스트는 “게임 서버 프로그래밍 교과서”를 참고하여 작성된 포스트입니다. 논블로킹 소켓이란 이름 그대로 블로킹하지 않는 소켓입니다. 이번 포스트에서는 논블로킹 소켓은 무엇이고 왜 필요한지에 대해 작성해 보겠습니다. 블로킹 소켓에 대한 내용은 다른 포스트에서 다룹니다. 막힘없는 소켓 통신 송신자와 수신자가 각각 1명뿐인 일대일 ...
이 포스트는 백준 사이트의 쿼드 트리 문제 풀이입니다. 문제 해결 과정 이 문제는 문제를 작은 문제로 나눠 해결하는 DP를 활용해 풀 수 있습니다. 사각형이 4개의 부분으로 나뉘었을 때, 방문하는 순서는 아래와 같습니다. 1 2 3 4 ...
이 포스트는 “게임 서버 프로그래밍 교과서”를 참고하여 작성된 포스트입니다. 블로킹 블로킹(Blocking)이란 스레드가 대기하는 현상을 의미합니다. 예를들어, 파일을 읽는 함수를 호출하면 스레드는 처리 요청을 운영체제에 요청하고 응답이 올 때까지 대기합니다. 이처럼 스레드가 대기하는 현상을 모두 블로킹이라고 합니다. 블로킹 상태에 있는 스...
이 포스트는 백준 사이트의 빙산 문제 풀이입니다. 문제 해결 과정 이 문제는 BFS와 시뮬레이션으로 문제를 해결할 수 있습니다. 여기서 가장 중요한 것은 BFS를 사용해서 무엇을 탐색할지 입니다. 입력받은 모든 칸을 순회하면서 주위에 얼음을 확인할 경우, 시간이 오래걸리기 때문에 얼음 위치만 저장하는 큐를 저장하고 큐에서 하나씩 꺼내...
이 포스트는 백준 사이트의 미로 탐색 문제 풀이입니다. 문제 해결 과정 이 문제는 BFS 탐색 으로 해결할 수 있습니다. 문제에서 주의할 점은 입력의 형태가 공백 없는 숫자로 전달되기 때문에 이를 변환해야 합니다. 코드 구현 #include <iostream> #include <queue> int row, ...
이 포스트는 백준 사이트의 평범한 배낭 문제 풀이입니다. 문제 해결 과정 이 문제는 다이나믹 프로그래밍(DP)로 해결할 수 있는 대표적인 문제입니다. 준서는 최대 K 까지 배낭에 담을 수 있으므로 K 이하인 물건은 모두 담을 수도 있습니다. 따라서 DP 테이블을 사용하여 N개의 물건을 최대 K 까지 담았을 때의 값을 구하였습니다. ...
프로세스의 정의 프로세스는 일반적으로 CPU(프로세서)에 의해 처리되는 사용자 프로그램, 시스템 프로그램 등 실행중인 프로그램을 의미합니다. 프로세스는 실행중인 프로그램이라는 정의 외 여러 정의가 존재합니다. PCB(Process Control Block)을 가진 프로그램 메인메모리에 적재된 프로그램 운영체제가 관리하는 실행 단위 ...
이 포스트는 백준 사이트의 새로운 게임 2 문제 풀이입니다. 문제 해결 과정 이 문제는 3차원 배열을 사용하여 풀 수 있는 문제입니다. 한 턴이 실행되는 과정은 아래와 같습니다. 1번부터 K번까지의 플레이어가 본인의 방향에 맞춰 이동 이동한 칸의 색상에 따라 행동 모든 플레이어가 이동할 때 마다 4개 이상 겹쳐진 것이 없는...
이 포스트는 백준 사이트의 여행 가자 문제 풀이입니다. 문제 해결 과정 이 문제는 플로이드 워셜 알고리즘을 사용해 풀 수 있는 문제입니다. 여행 경로별로 비용을 계산할 때, 모든 여행 지점에서 또다른 모든 지점까지의 경로를 구하는 플로이드 워셜 알고리즘을 사용하면 문제를 쉽게 풀 수 있습니다. 플로이드 워셜 알고리즘을 사용하기 전 2...