백준 17472 다리 만들기2
·
Nodejs로 알고리즘 박살내기
17472번: 다리 만들기 2 첫째 줄에 지도의 세로 크기 N과 가로 크기 M이 주어진다. 둘째 줄부터 N개의 줄에 지도의 정보가 주어진다. 각 줄은 M개의 수로 이루어져 있으며, 수는 0 또는 1이다. 0은 바다, 1은 땅을 의미한다. www.acmicpc.net 문제 핵심 파악하기. 1. 모든 섬을 최소 길이의 다리로 모두 이어줄 때 다리 길이의 합을 출력하는 문제입니다. 2. 섬과 섬을 다리로 이어줄 때 길이는 2이상이어야 하며, 다리가 교차하더라도 교차 구간의 길이가 1이 되는 것이 아닌 각각의 다리의 길이를 포함하여야 합니다. 풀이. 1. 각각의 섬을 다음과 번호를 붙여 구분해 줄 것입니다. 2. 각각의 섬이 다른 섬으로 이동할 때 최소 거리를 완전 탐색 + bfs를 이용하여 구해줍니다. 3. ..
백준 17090 미로 탈출하기
·
Nodejs로 알고리즘 박살내기
17090번: 미로 탈출하기 크기가 N×M인 미로가 있고, 미로는 크기가 1×1인 칸으로 나누어져 있다. 미로의 각 칸에는 문자가 하나 적혀있는데, 적혀있는 문자에 따라서 다른 칸으로 이동할 수 있다. 어떤 칸(r, c)에 적힌 문 www.acmicpc.net 1번 예제를 살펴보면 모든 영역에서 D이므로 아래로 내려가면서 경계선 밖으로 이탈합니다. 따라서 모두 미로 탈출이 가능하므로 정답은 9가 됩니다. 풀이. 시간을 단축하기 위해 DP 알고리즘과 DFS알고리즘을 적절히 사용해줍니다. DFS알고리즘을 사용하여 탐색한 경우 이미 도달한 적이 있었던 칸은 이미 결과가 정해 져 있기 때문에 다시 한번 탐색할 필요가 없습니다. dp 배열을 칸수만큼 만들어주고 기본값으로 -1을 할당해 주었습니다. -1의 경우 방..
백준 2668 숫자고르기
·
Nodejs로 알고리즘 박살내기
2668번: 숫자고르기 세로 두 줄, 가로로 N개의 칸으로 이루어진 표가 있다. 첫째 줄의 각 칸에는 정수 1, 2, …, N이 차례대로 들어 있고 둘째 줄의 각 칸에는 1이상 N이하인 정수가 들어 있다. 첫째 줄에서 숫자를 적절 www.acmicpc.net 간단히 예제를 살펴보면 싸이클이 발생한 구간 1, 3, 5를 순서대로 출력하면 됩니다. 즉. 무한 싸이클이 발생하는 구간의 정수들을 모두 순서대로 출력해주면 됩니다. 1. 깊이 우선 탐색(DFS) 알고리즘을 이용해 싸이클이 발생하는지 확인합니다. 2. 싸이클이 발생하였다면, 그 때 방문했던 모든 노드들은 정답이 되기때문에 'check'배열에 따로 저장해주겠습니다. 3. 위와 같이 N개의 노드를 탐색하면 되는데, 이전에 싸이클이 발생했던 구간(chec..
백준 5719 거의 최단 경로
·
Nodejs로 알고리즘 박살내기
5719번: 거의 최단 경로 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스의 첫째 줄에는 장소의 수 N (2 ≤ N ≤ 500)과 도로의 수 M (1 ≤ M ≤ 104)가 주어진다. 장소는 0부터 N-1번까지 번호가 매겨져 있 www.acmicpc.net 문제 핵심. 1. 구하고자 하는 "거의 최단 경로"란 최단 경로에 포함되지 않는 도로로만 이루어진 경로 중 짧은 것을 말합니다. 2. 거의 최단 경로가 없는 경우 "-1"을 출력합니다. 풀이. 1. 주어진 S노드에서 출발 했을 때 각 노드까지의 최단 거리를 "다익스트라" 알고리즘을 통해 구해줍니다. 2. 도착 노드인 D노드로 이동하는데 포함하는 최단 거리 간선의 경우 방문 처리를 해줍니다. 3. 다익스트라 알고리즘에 방문하지 않은 ..
백준 2212 센서 js
·
Nodejs로 알고리즘 박살내기
2212번: 센서 첫째 줄에 센서의 개수 N(1 ≤ N ≤ 10,000), 둘째 줄에 집중국의 개수 K(1 ≤ K ≤ 1000)가 주어진다. 셋째 줄에는 N개의 센서의 좌표가 한 개의 정수로 N개 주어진다. 각 좌표 사이에는 빈 칸이 하나 있 www.acmicpc.net 문제 설명. 문제를 읽어보면 "집중국의 수신 가능 역역은 고속도로 상에서 연결된 구간을 나타나게 된다."라는 설명이 명시되어 있습니다. 즉. 특정 위치에 집중국을 설치하는 것이 아닌 "범위"로 수신 가능 영역을 조절하고 수신 가능 영역의 길이의 합을 최소화하는 문제입니다. 예제 1번을 예로 설명 이어가겠습니다. 예제 1. 6 2 1 6 9 3 6 7 편의상 센서의 위치를 오름차순으로 정렬하여 집중국 영역 2개로 나누어 영역의 길이 합을 ..
백준 1461 도서관 js
·
Nodejs로 알고리즘 박살내기
1461번: 도서관 세준이는 도서관에서 일한다. 도서관의 개방시간이 끝나서 세준이는 사람들이 마구 놓은 책을 다시 가져다 놓아야 한다. 세준이는 현재 0에 있고, 사람들이 마구 놓은 책도 전부 0에 있다. 각 책 www.acmicpc.net 단순 정렬 문제입니다. 풀이. 중요한 포인트는 마지막으로 책을 놔두고 다시 0으로 돌아올 필요가 없다는 것 입니다. 따라서 마지막으로 두어야 할 책은 가장 먼 위치의 책입니다. 1. 책의 원래 위치가 0이 아닌 정수이므로 우선 위치가 음수인 배열과 양수인 배열로 나누어주고, 내림차순으로 정렬해 주었습니다. 2. 다시 0으로 돌아올 필요가 없는 가장 먼 위치의 책을 놔두는 경우를 먼저 제거해 줍니다. 양수의 배열과 음수의 배열을 절댓값으로 치환했을 때 더 큰 수가 존재..