dfs

문제https://www.acmicpc.net/problem/12100 풀이해당 문제는 DFS를 이용한 완전탐색을 구현해 시뮬레이션 문제를 풀었다.DFS를 이용한 이유는 각 깊이별로 4방향으로 이동할 모든 경우의 수를 계산해야 하기 때문이다. 이 문제에서 어려웠던 부분은 한 방향으로 이동하면 블럭이 합쳐지는 로직이였다.블럭은 이동 방향의 끝 부분부터 합쳐지며 합쳐지면 이동해 합쳐진 블럭은 없어지게끔 구현했다. 코드const input = require('fs') .readFileSync(process.platform === 'linux' ? '/dev/stdin' : __dirname + '/example.txt') .toString().trim().split('\n').map(e => e.split..
문제https://www.acmicpc.net/problem/14888 풀이해당 문제는 완전탐색 문제이며, 필자는 DFS와 DP를 이용해 풀이했다. 숫자의 순서는 바뀌면 안되기에 연산자를 DP 배열에 담아가며 연산을 검증을 진행했다. 이전에 풀었던 스타트와 링크 문제와 비슷한 흐름으로 해결할 수 있었다. 코드const input = require('fs') .readFileSync(process.platform === 'linux' ? '/dev/stdin' : __dirname + '/example.txt') .toString().trim().split('\n').map(e => e.split(' ').map(Number))const N = input.shift()[0];const toolNum =..
문제https://www.acmicpc.net/problem/14889 풀이이 문제는 완전탐색과 DFS를 이용해 팀원의 조합을 구한 뒤 각 팀원의 조합의 점수 총합을 구한 뒤 양 팀의 점수 차 중 최소 값을 구하는 문제이다. 코드const input = require('fs') .readFileSync(process.platform === 'linux' ? '/dev/stdin' : __dirname + '/example.txt') .toString().trim().split('\n')const N = +input.shift();let arr = input.map(e => e.split(' ').map(Number));let answer = Infinity;let visited = new Array(..
문제 설명 https://www.acmicpc.net/problem/14501문제 풀이 방법이 문제는 DP를 이용한 풀이와 DFS를 이용한 재귀 함수로의 풀이가 가능한 문제이다.처음 이 문제를 봤을 때는 조합을 이용해 최대로 받을 수 있는 급여를 뽑아낸다 였지만, 이 문제에서 원하는 것은 근무일 수 혹은 상담 시간의 조합이 아니라 받을 총 급여의 최대값이라 DP를 이용해 풀었다. 나는 DP를 이용해 풀이를 진행해보았다. 최근 풀었던 가장 긴 바이토닉 부분 수열 문제에서 아이디어를 얻었다. 스케줄을 순회하며 급여를 체크하는 방향으로 설계했다. 이 문제에서는 주어진 스케줄의 역순으로 순회하며 값을 구했다.문제에서 처음 상담을 시작한 날짜에 따라 받게되는 급여의 최대값이 달라지기 때문이다. 정답 코드const..
· CS
1. 정의 우선 DFS와 BFS의 정의부터 간략하게 다시 알고 가도록 하자. DFS 깊이 우선 탐색이라는 이름에 맞게 탐색할 노드를 깊이를 우선으로 탐색하는 알고리즘이다. DFS의 구현은 Stack 또는 재귀적인 특징을 이용해 구현한다. BFS 너비 우선 탐색은 넓게 바로 아래 하위 노드를 모두 넓게 탐색한 뒤 그 아래의 노드들을 탐색하는 알고리즘이다. 큐를 이용해 탐색을 관리한다. 2. 구분 방법 그렇다면, 실제 코테나 문제를 해결할 때 무엇을 언제 사용해야하나? 우선 그 문제를 분석해봐야한다. 그래프 탐색에서 모든 정점을 방문하는가? DFS와 BFS 둘 다 가능하다. 경로의 특징을 저장 혹은 조합, 순열을 구해야 하는 문제인가? 고로타면 DFS를 이용하는게 유리하다. 최단 경로, 최단 거리를 구해야 ..
문제 설명 https://school.programmers.co.kr/learn/courses/30/lessons/84512 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 풀이 방법 이 문제는 dfs를 이용해 완전탐색으로 문제를 풀었다. 사실상 모든 경우의 수가 5 * 5 * 5 * 5 * 5 + 5 * 5 * 5 * 5 + 5 * 5 * 5 + 5 * 5 + 5 = 3905 이기에 시간복잡도는 고려하지 않아도 된다고 생각했다. 코드 function solution(word) { let arr = []; const dfs = (str, length)..
58청춘
'dfs' 태그의 글 목록