본문 바로가기
728x90
반응형

백준20

[백준] 1931 회의실 배정 const fs = require('fs');const filePath = process.platform === 'linux' ? 'dev/stdin' : '../input.txt';const input = fs.readFileSync(filePath).toString().trim().split('\n');let N = parseInt(input.shift());let list = [];for (let i = 0; i { if (a[1] === b[1]) { return a[0] - b[0]; } else { return a[1] - b[1]; }});let answer = 0;let end = 0;list.forEach((time) => { if (time[0] >= end) { .. 2025. 2. 24.
[백준] 9461 - 파도반 수열 삼각형으로 나선을 그리면서 삼각형이 추가 되어지고 문제는 그려지는 삼각형 중 N번째의 사이즈에 대해서 묻는 문제였습니다. 처음에 좀 헷갈렸던게 어디서 부터 삼각형이 그려지는 였는데, 간단하게 위의 그림 처럼 그려보니 빠르게 이해가 되었습니다. 그 이후에는 삼각형의 사이즈가 이루어지는 값들을 하나씩 적어봤고 5번째 삼각형인 3부터 (0,4) .... 10번째 삼각형 12까지 (5,9)로 하나씩 더해가면서 삼각형이 이뤄지는 것을 확인 했습니다. const fs = require('fs');const filePath = process.platform === 'linux' ? 'dev/stdin' : '../input.txt';const input = fs.readFileSync(filePath).toStrin.. 2025. 2. 17.
[백준] 13023 - 백트래킹 적용하기 들어가며안녕하세요, 오늘은 DFS(깊이 우선 탐색)와 백트래킹을 활용하여 친구 관계 탐색 문제를 해결하는 과정을 단계별로 살펴보겠습니다. dfs, bfs 문제를 풀고 백트래킹 문제를 풀려고 했는데 이렇게 바로 풀게 되었습니다.🤔 Before: 처음 마주친 문제 상황문제는 다음과 같습니다:N명의 사람들 사이의 친구 관계가 주어집니다.한 사람에서 시작하여 친구 관계를 4번 이상 거쳐갈 수 있는지 확인해야 합니다.가능한 경로가 존재하면 1, 없으면 0을 출력합니다.처음에는 단순히 DFS를 구현하면 될 것이라 생각했지만, 여러 문제점들에 직면했습니다:한 시작점에서만 탐색을 시작하여 모든 가능한 경로를 찾지 못했습니다.메모리를 많이 사용하는 인접 행렬 방식을 사용했습니다.이전 경로로 돌아가서 다른 경로를 탐색하.. 2025. 1. 27.
[백준] 18511, 1260, 2606 / DFS, BFS 정리 / JavaScript DFS와 BFS의 실전적 이해: 백준 문제 풀이를 통한 완전 탐색 전략들어가며백준 문제를 풀면서 Greedy, DP 문제를 풀다가 드디어 항상 어려워했던 DFS, BFS 문제로 넘어오게 되었습니다. 완전 탐색 문제들을 풀면서 상황에 따라 DFS, BFS를 사용해야 할 필요를 느꼈고, 항상 개념만 알고 코드로 풀어내는 경험이 부족했던 것 같아서 정리하면서 글로 작성해보려고 합니다.DFS와 BFS의 기본 개념간단하게 이해하자면:DFS(깊이 우선 탐색): 경우의 수를 구할 때 그래프를 그린다면 나올 수 있는 가장 깊은 곳까지 갔다가 돌아오는 느낌BFS(너비 우선 탐색): 경우의 수를 구할 때 그래프를 그린다면 한 층씩 마무리해가면서 다음 단계로 넘어가는 느낌코드로 보는 실제 구현실제 구현에서 DFS와 BFS는.. 2025. 1. 25.
[백준] 1912 - dp const fs = require('fs');const filePath = process.platform === 'linux' ? 'dev/stdin' : '../input.txt';const input = fs.readFileSync(filePath).toString().trim().split('\n');let N = parseInt(input[0]);//N만큼 배열에 담아주기let dp = new Array(N).fill(0);//N만큼 값 담아오기let list = input[1].split(' ').map((item) => parseInt(item));//dp[0]은 list[0]으로 초기화dp[0] = list[0];//dp[i]는 dp[i-1]과 list[i]를 비교해서 큰 값을 넣어준다.fo.. 2025. 1. 22.
[백준] 2748, 10870 - 피보나치 문제 풀기 2748번 const fs = require('fs');const filePath = process.platform === 'linux' ? 'dev/stdin' : '../input.txt';const input = fs.readFileSync(filePath).toString().trim().split('\n');let N = parseInt(input[0]);let list = [0, 1, 1];for (let i = 3; i 10870번const fs = require('fs');const filePath = process.platform === 'linux' ? 'dev/stdin' : '../input.txt';const input = fs.readFileSync(filePath).toStri.. 2025. 1. 20.
728x90
반응형