최신 글 🆕
인기 글 👑
개발자 필수 블로그
- BrowserStack 다양한 브라우저 및 장치에서 웹 애플리케이션을 테스트할 수 있는 플랫폼입니다.
- Postman API 테스트와 문서화를 위한 필수 도구입니다.
- DevDocs 다양한 프로그래밍 언어와 프레임워크의 문서를 한곳에 모은 사이트로, 오프라인에서도 사용 가능합니다.
- MDN Web Docs HTML, CSS, JavaScript를 포함한 웹 기술의 공식 문서입니다.
- GitHub 소스 코드 관리와 협업을 위한 필수 플랫폼으로, 오픈소스 프로젝트를 탐색하고 기여할 수 있습니다.
- Stack Overflow 개발 중 발생하는 에러와 문제를 해결하기 위한 최고의 커뮤니티입니다.
백준 문제풀이
-
[백준][DP] 2240 자두나무 NodeJs 구현
목차https://www.acmicpc.net/problem/2240문제 코드 구현 방향상태가 총 3개이므로 그에 맞추어 3차원 배열로 메모이제이션해 풀어야 한다.이때 dp는 그 전 상태의 최댓값을 받아서 누적해 주는 형식으로 가야 한다. 코드 구현 시 주의점처음에 1번 나무에서 시작하지만 움직이고 시작할 수 있기 때문에 처음 시작점을 두개로 하고 max를 구해주어야 한다. 코드 구현const input = require("fs") .readFileSync("./dev/stdin", "utf-8") .trim() .split("\n");//sec cnt numlet [T, W] = input[0].trim().split(" ").map(Number);let dp = Array.from({ le..
2025.02.11
Nodejs
-
[백준][DP] 4811 알약 NodeJs 구현
목차https://www.acmicpc.net/problem/4811문제 문제 구현 방향dp의 하향식으로 푸는 문제로 상태가 전체 알약인 경우와 반쪽 알약인 경우로 나누어이차원 배열로 풀면 되는 문제이다. 코드 구현const input = require("fs") .readFileSync("./dev/stdin", "utf-8") .trim() .split("\n");let dp = Array.from({ length: 31 }, () => Array(31).fill(0));//반쪽 전체 두가지 상태let idx = 0;while (idx 0) { dp[half][entire] += eating(half + 1, entire - 1); } if (half > 0) { dp[hal..
2025.02.11
Nodejs
-
[백준][dp][dfs] 1520 NodeJs 구현
목차 https://www.acmicpc.net/problem/1520문제 코드 구현 방향dfs + dp 로 풀어야 한다. 이때 초기 dp값을 -1로 해야 하는데 그 이유는 0인 경우에 방문 여부를 확인할 수 없기 때문이다. 코드 구현const input = require("fs") .readFileSync("./dev/stdin", "utf-8") .trim() .split("\n");let [N, M] = input[0].trim().split(" ").map(Number);let dx = [0, 1, -1, 0];let dy = [1, 0, 0, -1];let dp = Array.from({ length: N + 1 }, () => Array(M + 1).fill(-1));let boa..
2025.02.07
Nodejs
-
[백준][bfs] 1600 말이 되고픈 원숭이 NodeJs 구현
목차 https://www.acmicpc.net/problem/1600문제 문제 구현 방향탐색 범위 때문에 그냥 dfs 백트래킹을 사용하면 시간 초과가 난다. 따라서 처음에 dp로 접근을 했지만한 인덱스로만 탐색을 하기 때문에 틀리게 된다.... 문제 풀이정답은 bfs였다. 능력까지 추가해서 visit 배열을 3차원 배열로 만들고 똑같이 bfs를 적용해 주면 된다.핵심 로직은 아래와 같다. Js로 3차원 배열 구현 방법let visit = Array.from({ length: M + 1 }, () => Array.from({ length: N + 1 }, () => Array(K + 2).fill(0))); bfs시 주의점 if (board[ny][nx] || visit[ny][nx][cnt +..
2025.02.06
Nodejs
-
[백준][백트래킹] 10974 모든 순열 NodeJs 구현
목차https://www.acmicpc.net/problem/10974문제 문제 구현 방향처음에 순열을 재귀로 구현했다가 틀렸다..재귀를 한후 정렬하는 과정에서 시간초과가 나기 때문이다. 잘못된 코드const input = require("fs") .readFileSync("./dev/stdin", "utf-8") .trim() .split("\n");let N = +input[0];let arr = [];for (let i = 1; i { let cnt = 0; while (cnt console.log(...item)); 코드 구현const input = require("fs") .readFileSync("/dev/stdin", "utf-8") .trim() .split("\n..
2025.02.04
Nodejs
-
[백준][bfs] 2573 빙산 NodeJs 구현
목차 https://www.acmicpc.net/problem/2573문제 문제 구현 방향빙산이 녹을 때 따로 대상을 저장해 놓았다가 나중에 한꺼번에 녹이는 것만 주의해 주면 된다.그 이후에 빙산의 조각 여부는 flag를 통해 쉽게 탐색할 수 있다. 이때 bfs를 써주자 부분 메서드 구현 빙산 탐색용 메서드function searching(x, y) { if (board[y][x] === 0) return; let cnt = 0; for (let i = 0; i M - 1 || ny N - 1) continue; if (board[ny][nx] === 0) cnt++; } queue.push([x, y, cnt]);} 빙산 녹이는 메서드function melting() { for (..
2025.01.30
Nodejs
-
[백준][위상정렬] 1005 ACM CRAFT NodeJs 구현
목차 https://www.acmicpc.net/problem/1005문제 문제 구현 방향result[next] = max(result[next], result[cur] + time[next]); 정점 next의 최소 건설 시간은 선행 정점이 모두 지어진 시간에 자신의 건물을 짓는 시간을 더한 값이다.위상정렬에서 여기까지 생각해야 되서 어려웠다. 코드 구현const input = require("fs") .readFileSync("./dev/stdin", "utf-8") .trim() .split("\n");class Queue { constructor() { this.queue = new Map(); this.front = 0; this.end = 0; } push(nu..
2025.01.29
Nodejs
-
[백준][dp] 1965 상자넣기 NodeJs 구현
목차https://www.acmicpc.net/problem/1965문제 문제 구현 방향dp로 푸는 문제로 현재 상자보다 작은 값인 상자의 누적값을 계산해주면 된다. 코드 구현const input = require("fs") .readFileSync("./dev/stdin", "utf-8") .trim() .split("\n");let N = +input[0];let arr = input[1].trim().split(" ").map(Number);let dp = Array(N).fill(1);for (let i = 0; i arr[j]) { cnt = Math.max(cnt, dp[j]); } } dp[i] = cnt + 1;}console.log(Math.max(...dp..
2025.01.28
Nodejs
-
[백준][브루트포스] 1058 친구 NodeJs 구현
목차 문제https://www.acmicpc.net/problem/1058 문제 구현 방향문제 이해를 제대로 하지 않아 처음에 unionfind로 풀어 틀렸다... 인접 리스트 구현 후 탐색 두번 하면 되는 문제였다. 코드 구현const input = require("fs") .readFileSync("./dev/stdin", "utf-8") .trim() .split("\n");let N = +input[0];let idx = 1;let board = Array.from({ length: N + 1 }, () => []);while (idx
2025.01.28
Nodejs
-
[백준][그리디] 1339 단어수학 NodeJs 구현
목차 https://www.acmicpc.net/problem/1339문제 문제 구현 방향이 문제는 브루트포스로 풀면 당연히 시간초과가 난다...최대 10! 순열까지는 괜찮았으나 순회하면서 값을 구하는 과정에서 시간복잡도가 더 초과한다. 잘못된 구현 방향const input = require("fs") .readFileSync("./dev/stdin", "utf-8") .trim() .split("\n");let N = +input[0];let arr = [];let idx = 1;let ans = 0;let dic = new Map();function total() { let sum = 0; for (let i = 0; i 문제 풀이이문제는 그리디로 자릿수로 최적해를 구하면 된다.따라서 ..
2025.01.23
Nodejs
-
[백준][다익스트라] 1238 파티 NodeJs 구현
목차https://www.acmicpc.net/problem/1238 문제 구현 방향전형적인 다익스트라 문제이다. 달라진 점은 모든 출발점에서 해주어야 하고 끝점에서 출발점까지 도착하는 것도 계산해야 된다는 부분이다. 참고https://be-senior-developer.tistory.com/229 [백준][다익스트라] 1753 최단 경로 NodeJs 구현목차 https://www.acmicpc.net/problem/1753문제 문제 구현 방향전형적인 다익스트라 알고리즘이다. 아래 블로그를 참고해서 운선순위 큐를 구현하고 풀었다.링크 [알고리즘] 다익스트라(Dijkstra) 알고리be-senior-developer.tistory.com 코드 구현const input = require("fs") .r..
2025.01.21
Nodejs
-
[백준][bfs] 2146 다리 만들기 NodeJs 구현
목차 https://www.acmicpc.net/problem/2146문제 문제 구현 방향bfs를 통해 사전 탐색을 하여 각 영역을 표시 해 준 뒤 bfs를 한번 더 해서 최소 거리를 구해 주었다. 문제 구현 시 주의점두번째 bfs를 할때 탐색 불가 조건을 철저하게 해주어야 한다.그렇지 않으면 틀리게 된다. 코드 구현const input = require("fs") .readFileSync("./dev/stdin", "utf-8") .trim() .split("\n");let N = +input[0];let idx = 1;let board = [];while (idx Array(N).fill(0));function bfs( startX, startY, flag) { let queue = [..
2025.01.19
Nodejs
-
[백준][그리디] 1541 잃어버린 괄호 NodeJs 구현
목차 문제https://www.acmicpc.net/problem/1541 문제 구현 방향나는 처음에 문자열 앞에 +를 더해준뒤 연산자와 수를 배열로 만들고 시작하였다.그렇게 하면 스택으로 접근하기 쉽다. 문제 풀이스택이 비어있고 +가 나오면 바로 연산을 해준다.스택이 안비어있고 +가 나오면 스택에 push 한다.스택이 비어있고 -가 나오면 스택에 push 한다.스택이 안비어있고 -가 나오면 스택에서 모든 값을 연산한 후 넣어준다. --------------------------마지막으로 스택에 남아있는 - 연산을 실행해 준다. 코드 구현const input = require("fs") .readFileSync("./dev/stdin", "utf-8") .trim() .split("\n");..
2025.01.16
Nodejs
-
[백준][dp] 1890 점프 NodeJs 구현
목차 문제https://www.acmicpc.net/problem/1890 코드 구현 방향dp까지는 생각해야 한다. 아래 문제와 유사한 문제이다.https://be-senior-developer.tistory.com/269 [백준][dp] 1937 욕심쟁이 판다 NodeJs 구현목차 https://www.acmicpc.net/problem/1937문제 문제 구현 방향dfs bfs로 풀면 유다희.. dp로 풀어야 하는 문제이다.이전 방문의 누적을 한 값을 더해주자 dp는 여전히 어렵다.. 코드 구현const input = requirebe-senior-developer.tistory.com 구현 시 주의점범위가 매우 크기 때문에 Nodejs 구현 시 BigInt를 써주어야 한다.또한 하양식으로 ..
2025.01.13
Nodejs
-
[백준][dp] 1937 욕심쟁이 판다 NodeJs 구현
목차 https://www.acmicpc.net/problem/1937문제 문제 구현 방향dfs bfs로 풀면 유다희.. dp로 풀어야 하는 문제이다.이전 방문의 누적을 한 값을 더해주자 dp는 여전히 어렵다.. 코드 구현const input = require("fs") .readFileSync("./dev/stdin", "utf-8") .trim() .split("\n");let board = [];let idx = 1;let N = +input[0];let dx = [0, 0, 1, -1];let dy = [1, -1, 0, 0];let dp = Array.from({ length: N }, () => Array(N).fill(0));let ans = 0;while (idx N - 1 ||..
2025.01.09
Nodejs
-
[백준][스택] 1406 에디터 NodeJs 구현
목차 https://www.acmicpc.net/problem/1406문제 문제 구현 방향처음에 slice로 문자열 붙여 넣기하고 자르기 해서 시간초과로 인해 틀렸다..그 이유는 slice는 O(N)의 시간 복잡도를 가지기 때문이다. 올바른 문제풀이당연히 자료구조로 풀면 풀린다. js메서드로 shift연산은 O(N)의 시간복잡도를 가지므로 스택을 사용해 풀었다.커서를 기준으로 왼쪽 스택, 오른쪽 스택이 있다고 생각하면 쉽게 풀린다. (이걸 떠올리는게 어렵다..) 코드 구현const input = require("fs") .readFileSync("./dev/stdin", "utf-8") .trim() .split("\n");let lStack = input[0].trim().split..
2025.01.04
Nodejs
-
[백준][스택] 2493 탑 NodeJs 구현
목차 https://www.acmicpc.net/problem/2493문제 문제 구현 방향끝부터 순회하여서 스택에 저장해 놓았다가 꺼내면서 해결하는 문제이다. 코드 구현const input = require("fs") .readFileSync("./dev/stdin", "utf-8") .trim() .split("\n");let N = +input[0];let ans = Array(N).fill(0);let arr = input[1].trim().split(" ").map(Number);let idxArr = arr.map((item, idx)=>[idx+1, item]);let stack =[];for(let i= idxArr.length-1; i >=0; i--){ if(stack.l..
2024.12.31
Nodejs
-
[백준][브루트 포스] 1759 암호 만들기 NodeJs 구현
목차 https://www.acmicpc.net/problem/1759문제 문제 구현 방향 조합을 구현할 줄 알아야 풀 수 있는 문제이다. 아래 글을 참고하자https://be-senior-developer.tistory.com/49 [알고리즘] 순열과 조합 c++ 구현목차 c++로 순열과 조합을 어떻게 구현하는지에 대해 알아보자 stl로 구현한 순열 #include #include #include using namespace std; int main() { vector v; v.push_back(1); v.push_back(2); v.push_back(3); sort(v.begin(), v.end()); //be-senior-developer.tistory.com 문제 풀이조합 함수 재귀 종료 조건..
2024.12.30
Nodejs
-
[백준][슬라이딩 윈도우] 1593 문자해독 NodeJs 구현
목차https://www.acmicpc.net/problem/1593문제 문제 구현 방향슬라이딩 윈도우는 너무 오랜만이라 많이 헤멨다...나는 문자를 idx로 쓰기 위해 map을 통해 풀었다. 문제 풀이1. 단어 W 길이만큼 map에 키, 값으로 설정해 준다. ex) c 1 A 1 d 1 a 12. 단어 W 길이만큼 S에서 인덱스 0부터 탐색한 뒤 값이 존재하면 map 값을 감소 시킨다. AbrA -> c 1 A -1 d 1 a 13. 슬라이딩 윈도우를 통해 빠지는 문자는 ++value를 해주고 추가하는 문자는 --value 해준다.4. 모든 value가 0보다 작거나 같으면 ans++ 해준다. 코드 구현const input = require("fs") .readFileSync("./dev/st..
2024.12.26
Nodejs
-
[백준][브루트포스] 1107 리모컨 NodeJs 구현
목차https://www.acmicpc.net/problem/1107 문제 문제 구현 방향처음에는 이진탐색으로 해야하나 싶었지만 50000범위를 한번 루프돌면 충분한 시간 복잡도가 나올 것 같아브루트 포스로 풀었다. (그리디인가? 했지만 너무 복잡해보여서 브루트포스부터 트라이) 문제 구현 시 주의점3번째 입력이 주어지지 않을 수 있기 때문에 빈 입력을 받을려 하면 85%에서 error가 뜨니 주의하자나는 50만에서 충분히 범위를 넓혀 주었다. 코드 구현const input = require("fs") .readFileSync("./dev/stdin", "utf-8") .trim() .split("\n");let a = input[0].trim();let broken = [];if (Number..
2024.12.25
Nodejs
728x90