전체 글

알고리즘

[백준] 1260 DFS와 BFS node.js

문제 링크 1260번: DFS와 BFS 첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다. 어떤 두 정점 사 www.acmicpc.net 문제 유형 DFS/ BFS 문제 풀이 공통) 각 정점과 연결된 정점의 번호를 2차원 배열 graph에 담는다. (정점이 여러 개인 경우에 정점 번호가 작은 것부터 먼저 방문해야하므로 연결된 정점의 번호를 오름차순으로 정렬했다.) [[], [2, 3, 4], [1, 4], [1, 4], [1, 2, 3], []] => 1번과 연결된 정점: 2, 3, 4 / 2번과 연결된 정점: 1, 4... stack, queue에..

알고리즘

[백준] 1932 정수 삼각형 node.js

문제 링크 1932번: 정수 삼각형 첫째 줄에 삼각형의 크기 n(1 ≤ n ≤ 500)이 주어지고, 둘째 줄부터 n+1번째 줄까지 정수 삼각형이 주어진다. www.acmicpc.net 문제 유형 다이나믹 프로그래밍 문제 풀이 반복문을 통해 (N - 2)층부터 0층까지 차례로 정수들을 방문한다. 현재 위치의 값 = (바로 아래층의 연결된 값중 최댓값) + (현재 위치의 값) 0층에 저장된 최대 경로에 있는 수의 합을 출력한다. 코드 const fs = require("fs"); const filePath = process.platform === "linux" ? "/dev/stdin" : "./input.txt"; const input = fs.readFileSync(filePath).toString()...

알고리즘

[백준] 10972 다음 순열 node.js

문제 링크 10972번: 다음 순열 첫째 줄에 입력으로 주어진 순열의 다음에 오는 순열을 출력한다. 만약, 사전순으로 마지막에 오는 순열인 경우에는 -1을 출력한다. www.acmicpc.net 문제 유형 브루트포스 - 순열 문제 풀이 처음에 모든 순열을 차례로 다 구해서 나열하여 입력값의 순열의 다음 순열을 찾는 방식을 생각했다. 그러나, 순열은 최대 10,000개의 연속된 수로 있기에 시간초과가 날 것 같아서 다른 방법을 찾아야했다. 방법이 생각나지 않아 검색을 했다. C++에는 algorithm 헤더 파일을 넣고, 헤더 파일 내의 next_permutation 함수를 사용하면 현재 순열의 다음 순열을 구할 수 있다고 한다. JS에는 이런 내장 함수가 없기에, 직접 구현하여야 한다. 입력값으로 들어온..

알고리즘

[프로그래머스] 문자열 내 마음대로 정렬하기 JavaScript

문제 링크 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 유형 정렬 (Lv.1) 문제 풀이 sort 메소드 파라미터로 compareFunction을 삽입해 정렬 순서를 정의했다. compareFunction (a, b가 비교되는 두 요소일때) compareFunction(a, b)의 반환값 0: b의 인덱스가 a의 인덱스보다 작도록 정렬한다. 문제에서 인덱스 n의 문자가 같을 경우에는 사전..

알고리즘

[프로그래머스] 다음 큰 숫자 JavaScript

문제 링크 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 유형 재귀 (Lv.2) 문제 풀이 자연수 N이 있을 때, N에서 2의 제곱인 수 중에서 N보다 작거나 같은 가장 큰 수를 뺀다. 이때, 2의 제곱의 지수에 해당하는 자리는 1이 된다. 재귀적으로 getBinaryLength 함수를 호출하여 2진수를 구하고, 2진수 중 1의 개수를 리턴한다. 자연수 N+1부터 반복하여 N의 2진수의 1의 개수와 같은 자연수를 찾는다. 코드 function solution(n) { // n의 최대 지수가 최대 인덱스 번호인 배열을 만든다. let arr = new..

sandwe
sandwe