본문 바로가기

백준/그래프83

백준 14226 c++ "이모티콘" -PlusUltraCode- https://www.acmicpc.net/problem/14226[필자 사고]BFS탐색 문제입니다.특히 너비우선 탐색이라 최소값을 찾는 대표적인 문제라고 생각이 드네요이 문제에서 느낀 매력적이 포인트는 moniter 와 copyBoard를 이용하여 visted를 관리하는 방식이였습니다언뜻보면 visited를 1차원으로 해결할 거라 생각하지만 실제로 2차원배열을 설정하여 2가지 값에 해당하게 방문 배열을 설정해야 문제를 해결할 수 있습니다. 또한 범위 관련해서 주의를 해야 되는데 2000을 마지노선으로 정한 이유는 해당 S값이 1000으로 되어있어 1000의 2배는 2천이라 해당 숫자로 범위를 정했습니다. 아래는 자세한 소스코드 해설입니다.[코드 해설] 구조체 정의 및 변수 선언struct img는 현재.. 2025. 3. 9.
백준 11559 c++ "Puyo Puyo" -PlusUltraCode- https://www.acmicpc.net/problem/11559[필자 사고]구현 문제이다.구현 문제들의 특징은 여러개의 함수를 만들어서 역할을 분리해야 하는게 keyPoint다필자는 문제에서 말하는 의도를 잘못 해석하여 계속 해맷었다. 일단 사용한 기술은 gravity 그리고 bfs로 같은 구역 점검하기 정도?? 쓴거 같다.아래는 자세한 코드 해설이다. [코드 해설]2. 입력 처리 (Input 함수)Input() 함수는 게임 보드(12행 × 6열)를 입력받아 arr 벡터에 저장한다.arr 벡터를 12x6 크기로 초기화한다.12개의 문자열을 입력받고, 각 문자열의 문자를 2차원 벡터 arr에 저장한다.3. 좌표가 유효한지 검사 (isInside 함수)isInside(int sero, int garo) .. 2025. 3. 8.
백준 1240 c++ "노드사이의 거리" -PlusUltraCode- https://www.acmicpc.net/problem/1240 [필자 사고]그래프 문제이다.단순히 특정 노드사이의 거리를 요구하는 문제이므로 너비우선 탐색인 BFS탐색으로 문제를 해결했다.매번 방문배열을 체크해서 방문한 곳은 true를 처리하고 특정 지점에 도달할 경우 그동안의 weight을 반환한다.BFS 너비우선탐색 기본 문제로 좋은거 같다.[코드 해설]1. 입력 처리 (Input 함수)Input() 함수는 그래프 정보를 입력받아 인접 리스트 형태로 저장하는 역할을 합니다.먼저, 노드 개수 N과 쿼리 개수 M을 입력받습니다.arr 벡터를 크기 N+1로 초기화하여 1번 노드부터 접근할 수 있도록 합니다.visited 벡터 역시 크기 N+1로 설정하여 방문 여부를 관리합니다.N-1개의 간선을 입력받아.. 2025. 3. 6.
백준 18405 c++ "경쟁적 전염" -PlusUltraCode- https://www.acmicpc.net/problem/18405[필자 사고]필자는 해당 문제를 BFS로 풀었다. 이 문제만의 특이 포인트는 다음과 같다.1. 작은 숫자들의 바이러스들 부터 퍼진다.2. 모든 숫자들의 바이러스가 퍼지게 되면 1초가 끝난다.3. 한번 퍼질때 주위 한칸밖에 퍼지지 못한다. 필자는 이러한 제약 조건들을 해결하기 위해 우선순위 큐와 일반 큐를 이용하여 문제를 해결했다.우선순위 큐에는 바이러스 번호들을 기준으로 작은 순서대로 정렬을 하였고 특정 위치들을 우선순위 큐에 넣어서 관리했다.(새로 생성된 바이러스 포함) 그리고 매번 큐로 BFS를 실행하여 바이러스 전파를 진행하였다.개인적으로 BFS와 우선순위 큐를 공부하기 좋은 문제였다. 아래는 자세한 코드 해설이다.[코드 해설]1. .. 2025. 3. 5.