백준
-
[백준] 14725번: 개미굴 (Node.js)📝 알고리즘/백준 2025. 4. 17. 13:28
접근방식문제를 살펴보면 우선 각 경로가 트라이 자료구조로 이루어져 있는 것을 확인할 수 있습니다. 트라이 자료구조란?검색을 빠르고 효율적으로 할 수 있도록 설계된 트리 기반 자료구조이며, 주로 단어 목록에서 단어를 검색하거나 자동 완성 기능, 사전 검색, 문자열 패턴 매칭 등에 사용됩니다.여기서 중요한 점은 문자열을 트리 형태로 저장하고, 공통 접두사를 공유하여 중복된 데이터를 최소화하는 것입니다. 간단한 설명으로 시작하여 다시 진행해보자면, 이 문제에서 요구하는 주요 작업은 입력된 경로를 트라이에 삽입하는 것입니다. 예를 들어2 KIWI BANANA 는 KIWI -> BANANA의 경로를 만드는 것으로 KIWI 아래에 BANANA가 있는 것이지요. 결국 트라이를 재귀적으로 호출하여 안쪽 depth 까지..
-
[백준] 24267번: 알고리즘 수업 - 알고리즘의 수행 시간 6 (Node.js)📝 알고리즘/백준 2024. 9. 11. 15:24
접근방식우선 문제의 코드를 변경하면 아래와 같습니다.MenOfPassion(A[], n) { sum 3중 for문을 통한 계산의 수행 횟수를 구해야하는데, 변수가 i, j, k가 있습니다.이 과정에서 i 가 성립을 해야하는 상태이면서i가 고정이 되면, j는 그다음 값, k는 j의 그 다음 값을 고르는 방식입니다. i는 0부터 n - 2 까지 돕니다.즉, n - 1번 반복합니다.(0부터 n-2까지니까 n-2+1) j는 i + 1부터 n - 1까지 반복합니다.i = 0이면, j는 1부터 n - 1까지 값을 가지며 n - 1번 반복합니다.그리고 i가 증가할수록, j는 증가한 만큼 반복이 줄어듭니다. k는 j + 1부터 시작해서 n까지 반복합니다.i = 0이면 j = 1이고, k는 2부터 n까지 반복..
-
[백준] 24266번: 알고리즘 수업 - 알고리즘의 수행 시간 5 (Node.js)📝 알고리즘/백준 2024. 9. 10. 15:05
접근방식나름 삼중for문일거니 해서 쉽게 생각했는데, 자꾸 틀리더라구요...😰이건 제 틀린 코드입니다.const readline = require("readline");const rl = readline.createInterface({ input: process.stdin, output: process.stdout,});let input = [];rl.on("line", function (line) { input.push(line);}).on("close", function () { // MenOfPassion(A[], n) { // sum 다시 문제를 보며, 뭐가 문제일까 봤더니 최댓값이 500,000일 경우 number 타입으로 처리할 수 없는 엄청 큰 값이 나올 것 같더라구요. 자..
-
[백준] 24265번: 알고리즘 수업 - 알고리즘의 수행 시간 4 (Node.js)📝 알고리즘/백준 2024. 9. 9. 17:35
접근방식이번 문제는 알고리즘의 수행시간3과 비슷해보이지만 반복문의 범위가 다릅니다.반복문의 입력 크기 n에 대해 선형적으로 실행되더군요. MenOfPassion(A[], n) { sum 우선 보기 쉽게 javascript로 변형해보았습니다. 외부 반복문과 내부 반복문으로 나눠서 보겠습니다. 외부 반복문i는 0부터 n-1번까지 반복합니다.이 말은 즉, 우리가 잘 알고 있듯이 n번 반복을 의미합니다. 내부 반복문j는 i+1부터 n-1번까지 반복합니다. i = 0 일 때, j는 1부터 n-1번 반복합니다.i = 1 일 때, j는 2부터 n-1번 반복합니다.i = n-1 일 때는 j = n 이므로 n i = n-2 일 때는 j = n-1 이므로 딱 1번 실행됩니다. 그럼 j 루프에서 반복되는 횟수는 ..
-
[백준] 24264번: 알고리즘 수업 - 알고리즘의 수행 시간 3 (Node.js)📝 알고리즘/백준 2024. 9. 9. 13:51
풀이 ⏰이중for문의 시간복잡도에 대해 다루고 있습니다.이중 반복문을 사용하면 시간복잡도가 O(n^2)가 됩니다.=> 외부 반복문 n번, 각 외부 반복문마다 내부 반복문 n번 실행const readline = require("readline");const rl = readline.createInterface({ input: process.stdin, output: process.stdout,});let input = [];rl.on("line", function (line) { input.push(line);}).on("close", function () { // MenOfPassion(A[], n) { // sum 백준 24264번 링크👉 https://www.acmicpc.net/..
-
[백준] 24263번: 알고리즘 수업 - 알고리즘의 수행 시간 2 (Node.js)📝 알고리즘/백준 2024. 9. 9. 13:16
접근방식이전 게시글 [백준] 24262번: 알고리즘 수업 - 알고리즘의 수행 시간 1 (Node.js) 와 마찬가지로알고리즘의 시간 복잡도에 대해 다루는 기초문제이며 제시된 코드의 시간복잡도를 분석하는 문제입니다. 시간복잡도와 빅오표기법(Big-O)에 대한 짧은 설명글은이전 게시글에 있으니 필요하시면 확인하시는게 좋을 것 같습니다😄 이번 문제 또한 시간복잡도에 관한 문제이며, 저번 게시글에는 O(1)에 대한 문제였지만이번에는 for문이 들어간 O(n)에 대한 문제입니다. 풀이 ⏰const readline = require("readline");const rl = readline.createInterface({ input: process.stdin, output: process.stdout,});..
-
[백준] 24262번: 알고리즘 수업 - 알고리즘의 수행 시간 1 (Node.js)📝 알고리즘/백준 2024. 9. 9. 11:19
접근방식알고리즘의 시간 복잡도에 대해 다루는 기초문제이며 제시된 코드의 시간복잡도를 분석하는 문제입니다. 이 문제를 풀기 위해서 기본적으로 알아두셔야 할 것이 2가지가 있는데,시간복잡도와 Big-O 표기법입니다. 1. 시간복잡도알고리즘이 얼마나 빨리 실행되는지를 측정하는 기준입니다.즉, 입력의 크기(데이터 양)가 커지면 알고리즘이 얼마나 더 많은 시간을 필요로 하는지를 보는 것입니다. 예를 들어let sum = 0;for(let i=0; i n = 3 이면 3개의 숫자를 더해야 하므로 연산이 3번 일어납니다.n = 1000이라면 1000개의 숫자를 더해야 하므로 연산이 1000번 일어납니다. 즉, 배열의 크기에 비례해서 연산 횟수도 늘어납니다.결국 배열의 합을 구할 때, 배열의 크기가 커질수록 더 많은 ..
-
[백준] 11659번: 구간 합 구하기 4 (Node.js)📝 알고리즘/백준 2024. 9. 5. 14:59
접근방식처음에 풀기 시작했을 때는, 주어진 배열에 a번~b번까지 자르고 더하고 콘솔!.... 이라고 너무 안일하게 풀었었습니다.const readline = require("readline");const rl = readline.createInterface({ input: process.stdin, output: process.stdout,});let input = [];rl.on("line", function (line) { input.push(line);}).on("close", function () { const num = input[0].split(" ")[1]; const arr = input[1].split(" ").map(Number); input.splice(0, 2); con..