11652 주어진 숫자 카드 중에서 가장 개수가 많은 카드를 출력하라.최대 개수가 동일한 카드가 여러 개라면 카드 번호가 더 작은 카드를 출력.BigInt문제에서 주어진 숫자 카드에 적힌 숫자가 +- 2^62 를 넘어서는 수준이므로 반드시 BigInt 자료형을 사용해야
N이 주어질 때, 가능한 N-Queen 의 조합 개수를 출력하라.소스코드는 두 부분으로 나뉜다.NQueen(N, k:행 번호(넣을 자리), arr: 열 번호를 저장할 배열)N을 입력으로 받고, k번째 행의 몇 번째 열에 Queen을 넣을지를 arr에 저장하는 recur
N개의 숫자와 N-1개의 연산자가 주어질 때, 해당 숫자와 연산자로 만들어낼 수 있는 식을 무조건 앞에서부터(연산 우선순위 무시) 계산한 결과 중 최대, 최소값을 출력하라.강의 듣고 혼자 node.js 로 다시 풀어 본 코드문제에서 주어진 결과값의 범위인 +-10억을
소수 구하기 - 에라토스테네스의 체
배열 A의 원소가 주어질 때, Ai = B\[Pi]를 만족하는 P를 구하여라.주어진 배열을 정렬한 후 정렬된 배열의 인덱스를 활용하는 문제.문제 풀이 과정에 따라 차근차근히 변환 과정을 이해해야 하는 문제다.처음에는 다소 헷갈렸으나, 정렬 과정을 console.log
파일명과 확장자가 여러 개 주어질 때, 확장자와 그 개수를 세고, 확장자를 기준으로 정렬한 결과를 출력하라입력값에서 확장자만 떼어서 확장자 순차적으로 정렬정렬된 상태를 활용, 개수 세어 출력readline 모듈 사용해야 풀 수 있고str += 로 마지막에 콘솔 찍어야
A, B 집합의 원소가 주어질 때A가 B보다 큰 (A, B) 원소의 조합의 개수를 구하는 문제이분 탐색 알고리즘 외부: 매개변수로 줄 인덱스 값 확인하기!이번에는 (배열, L인덱스, R인덱스, 확인할 원소)를 매개변수로 코드를 짰다. 초기값을 제대로 확인하고 넣지 않으
13144입력: 길이가 N인 수열주어진 수열에서 1개 이상의 연속하는 숫자들을 뽑는 상황출력: 같은 수가 여러 번 등장하지 않는 경우의 수연속적인 숫자들을 뽑는 상황이므로 투 포인터를 활용한다.효율적인 탐색을 위해 두 포인터 L, R, 그리고 이미 포함된 값인지 확인하
1260입력: 그래프를 이루는 정점의 개수, 간선의 개수, 시작 정점(루트 노드), 연결된 두 정점들의 목록이 주어진다.출력: DFS 수행 결과, BFS 수행 결과방문된 점을 순서대로 출력, 방문 가능한 점이 여러 개일 때는 작은 번호를 우선 방문.문제에서 제시하는 입
2667입력: 그래프를 구성하는 단지들의 N\*N 행렬출력: 총 단지의 수, 단지에 속하는 집의 수연결되어 있는 집들끼리 한 단지를 이룬다. 이때, 단지의 총 개수와 각 단지를 이루는 집의 수를 오름차순으로 출력하라.문제에서 주는 값이 인접 행렬이므로, 인접 행렬 형태
BOJ 2178 미로탐색입력: N \* M 크기의 미로가 주어진다.출력: (1,1) 에서 (N, M)까지의 최단거리를 구하라.주어진 미로에서 0은 이동할 수 없는 영역으로, 1이 적힌 칸으로만 이동 가능하다.입력된 미로를 인접 행렬 형태로 변환한다. BFS 탐색을 이용
BOJ 11725 트리의 부모 찾기입력: N \* M 크기의 미로가 주어진다.출력: (1,1) 에서 (N, M)까지의 최단거리를 구하라.주어진 미로에서 0은 이동할 수 없는 영역으로, 1이 적힌 칸으로만 이동 가능하다.주어진 트리 구조를 인접 리스트로 변환한다.dfs
BOJ 2252 줄 세우기입력: N명의 학생들의 키를 1:1로 비교한 M개의 결과가 주어진다.출력: 키 순서대로 출력하라.답이 여러 가지일 수 있다.문제에서 주어진 두 명씩 비교한 데이터를 인접 리스트 형태로 변환한다.인접 리스트의 데이터와 각 노드별 in-degree
BOJ 2470 줄 세우기입력: N개의 숫자가 주어진다.출력: 주어진 숫자들 중 합했을 때 0에 가장 가까운 수를 만드는 서로 다른 두 수를 출력하라.이분 탐색의 입력값으로 주어진 수에 반대 부호를 붙여 합이 0에 가까운 수를 탐색한다.이분 탐색으로 찾은 인덱스 좌우
BOJ 9095 1, 2, 3 더하기입력: 테스트 케이스의 개수와 정수가 주어진다.출력: 1, 2, 3의 합으로 주어진 정수를 나타낼 수 있는 방법의 개수를 출력하라.동적 프로그래밍으로 주어진 문제에 대한 점화식을 세운다.초기값을 활용해 계산 결과를 저장한 후 테스트
BOJ 2579 계단 오르기입력: 계단의 총 개수와 각 계단을 밟으면 얻을 수 있는 점수가 주어진다.출력: 얻을 수 있는 최대 점수는?한 번에 한 계단씩 또는 두 계단씩만 오를 수 있다.시작 게단을 제외하고 3개 연속으로 밟을 수 없다.N번째 계단을 올랐을 때 얻을 수
BOJ 1949 우수 마을입력: 마을의 수, 연결된 마을들, 주민 수가 주어진다.출력: 주민 수의 총합을 출력하라.조건우수 마을의 주민 수를 최대화해야 한다.연결된 두 마을은 모두 선택될 수 없다.선정되지 못한 마을은 적어도 하나의 우수 마을과 인접해야 한다.주어진 자
BOJ 1011 Fly me to the Alpha Centauri입력: 테스트 케이스의 수와 시작지점, 도착지점이 주어진다.출력: 시작지점부터 도착지점까지의 한 번에 이동할 수 있는 거리의 조건이 주어진다. 이때 최단 이동 횟수를 구하라.주어진 이동 규칙이 이전 이동
BOJ 2805 나무 자르기이분탐색 알고리즘을 구현한다.이때 L, R을 한 칸씩 이동하기 위한 내부 조건으로 해당(mid)부터 나무를 잘랐을 때 원하는 값보다 크거나 같으면 1, 작으면 0을 반환하는 bool 함수를 활용한다.L, R에 초기값을 줄 때 R에 최대 나무의
\[boj] 2110. 공유기 설치 (node.js)문제 조건을 함수로 작성한 후, 이분탐색 알고리즘의 결정 조건으로 활용하는 문제다.결정 조건주어진 공유기의 설치 가능 위치가 한 집당 최대 하나이므로, 멀리 두기 위해서는 무조건 정렬 완료된 첫 집에는 설치되어야 한다
\[boj] 1253. 좋다 (node.js)입력: N개의 숫자들출력: 좋은 수의 개수어떤 수를 다른 두 수의 합으로 나타낼 수 있는 경우 "좋다" 라고 한다.중복되는 숫자이더라도 위치가 다른 경우 다른 수이다.좋은 수를 탐색하기 위해 투 포인터를 활용한다.(최대 +
\[boj] 2470. 두 용액 (node.js)주어진 숫자들 중 서로 다른 두 개를 조건에 맞게 출력하는 문제조건: 합이 0이거나 0에 가장 가까운 조합 찾기일반적으로 이분 탐색으로 조건(최소 거리 갱신)과 L, R을 통해 풀이했던 2470번 문제를또 다른 풀이법인
\[boj] 16472. 고냥이 (node.js)숫자 N과 문자열이 주어진다.주어진 문자열에서 최대 N 종류의 알파벳이 인식 가능할 때,인식 가능한 문자열의 최대 길이를 찾아라두 포인터 L, R을 조건에 따라 이동하면서 각 char의 등장 횟수를 저장하면이 배열을 통해
\[boj] 3273. 두 수의 합 (node.js)수열의 크기와 수열, 숫자 x가 주어진다.서로 다른 두 수의 합이 x가 되는 쌍의 개수를 구하라.이분 탐색의 조건을 활용해서 수열의 각 원소마다 그 원소와 합했을 때 x가 되는 수를 탐색한다.유의:이때 탐색 결과가 "
\[boj] 1068. 트리 (node.js)입력: 트리의 노드의 개수 N, 0 ~ N-1번 노드의 부모 노드의 번호, 삭제할 노드 번호가 주어진다.출력: 리프 노드의 개수를 출력하라.부모가 -1이면 루트 노드이다.트리 탐색 후 리프노드의 개수를 센다.dfs를 활용하여
\[boj] 1389. 케빈 베이컨의 6단계 법칙 (node.js)BFS로 각각의 거리를 계산하고 저장해준 후 최소 거리를 가지는 사람의 인덱스를 출력'최단 거리' 문제는 BFS를 활용해야 동일 depth의 노드가 같은 거리를 가지도록 할 수 있음을 잊지 말자!resu
\[boj] 1005. ACM Craft (node.js)각 노드는 건물 번호로, 건물 번호와 건설 시간이 주어진다.연결된 노드의 정보들과 최종 노드가 주어질 때, 최종 노드까지 건설 소요시간 중 최소 소요시간을 출력한 노드는 선행된 노드들의 건설이 모두 완료되어야만
\[boj] 1012. 유기농 배추 (node.js)밭의 크기와 배추의 위치 등이 주어진다.연결된 위치의 밭에 있는 배추들은 한 번의 시행에 모두 접근 가능하다.필요한 총 접근의 최소 횟수는?주어진 자료구조를 배열에 저장해둔 후 DFS의 실행 횟수를 count한다.사전
\[boj] 1697. 숨바꼭질 (node.js)주어진 두 지점 간 이동방법이 3가지로 정해져 있을 때, 시작점부터 도착점에 도달 가능한 최단 시간은?1초에 const getCand = (node) => \[node - 1, node + 1, node \* 2]; 이
\[boj] 21919. 소수 최소 공배수 (node.js)주어진 숫자들 중 소수인 수들의 최소 공배수 구하기A \* B === GCD(A, B) \* LCM(A ,B) 이다.따라서 먼저 소수들을 구한 후,유클리드 호제법으로 GCD 함수를 구현하고,LCM == A \*
\[boj] 3055. 탈출 (node.js)고슼도치가 비버 굴로 탈출 가능한 최단 시간을 출력하라!탈출 불가시 "KAKTUS" 출력BFS: 이동 가능한 4방향에 대해 탐색if 조건으로 불필요한 탐색 최소화 (continue)유의: BFS visited check: q
\[boj] 2473. 세 용액 (node.js)세 용액의 합이 0 에 가장 가깝게 하는 세 용액을 출력for 문을 통해 두 용액 i(0 ~ N-1), j(i+1 ~ N-1)을 지정한 후 이 두 용액을 보완해주는 나머지 한 용액 값을 특정했다.두 포인터 알고리즘을 활용
\[boj] 1916. 최소비용 구하기 (node.js)연결된 노드의 정보와 간선의 가중치가 주어진다. (유향 그래프)출발 노드와 최종 노드가 주어질 때, 최단 거리를 출력하라다익스트라 알고리즘을 통해 최단 거리를 출력하는 문제node.js 풀이를 위해서 우선순위 큐
입력으로 들어오는 정수 X에 대해 가능한 연산들은 아래와 같다. (1 <= X <= 10^6)3으로 나누어 떨어지면 -> 이 수를 3으로 나눈다2로 나누어 떨어지면 -> 이 수를 2로 나눈다1을 뺀다연산을 활용해 주어진 정수 X를 1로 만들 수 있는 최소 횟
\[boj] 11052. 카드 구매하기 (node.js)N개의 카드를 구매하려 한다. 배열에 순서대로 1장짜리 카도, 2장짜리 카드, ..., k장짜리 카드의 판매 가격 배열이 주어질 때,N개의 카드르 구매할 수 있는 가장 비싼 가격은?동적 프로그래밍 문제로, N개의
\[boj] 12865. 평범한 배낭 (node.js)dp 로 풀이하는 배낭 문제정렬 없이, dp의 행/열로 물건의 개수, 무게를 제약으로 두고 값으로 가치를 계산dpi =i개의 물건 (1~i 번째 물건)을 사용해서최대 j의 무게를 채울 수 있는가치의 최댓값점화식 dp
\[boj] 2225. 합분해 (node.js)DP로 풀이 가능한 경우의 수를 구하는 문제모든 경우의 수를 시간 내에 구하기 위해 점화식을 세우고 풀이한다.dpN: K개의 숫자로 N을 만들 수 있는 경우의 수dpN = dpN-1 + dpN-1 + ... + dpN-1(
\[boj] 7569. 토마토 (node.js)간만에 푼 BFS 문제! 최단 시간을 구해야 하므로 BFS로 탐색을 거쳐서 익은 토마토부터 출발하여 모든 익지 않은 토마토들까지 도달해야 하는 문제다.로직은 한큐에 떠올려서 맞게 풀었는데, 구현이나 디버깅이 생각보다 오래
\[boj] 9461. 파도반 수열 (node.js)점화식을 찾아서 풀이하는 DP 문제오늘은 SQLD 시험 전날이라 간단한 걸로 골라 풀어봤다. 규칙이 간단한 문제라 금방 풀이할 수 있었는데, 문제에서 삼각형 변의 길이를 직접 나열해주지 않았었다면 더 헷갈렸을 수도 있
\[boj] 9205. 맥주 마시면서 걸어가기 (node.js)문제에서 제시한 맥주 관련 설명은 그래프의 노드 간에 연결하는 간선의 존재 여부를 판단하는 단서이다.따라서 맨하탄 거리를 계산한 후, 맥주 20개 \* 거리 50 = 1000보다 작거나 같으면 두 노드는 연
\[boj] 3184. 양 (node.js)양과 늑대의 수에 따라서 양이 모두 잡아먹히거나 늑대가 모두 달아나므로, 탐색 완료 후 그 수를 비교하면 된다.따라서 조건에 맞게 탐색한 후 결과를 출력하도록 BFS로 구현하였다. v(늑대) 또는 o(양)의 위치를 출발지점으로
\[boj] 14889. 스타트와 링크 (node.js)문제 조건에 따른 팀을 구성할 수 있도록 탐색한 후, 탐색 결과를 활용해 값을 계산해주면 되는 문제다.팀에 속하는 사람을 뽑는 경우의 수를 겹치지 않게 하기 위해 startIdx 를 인자로 활용해 오름차순으로 뽑았
\[boj] 2343. 기타 레슨 (node.js)주어진 크기 N의 배열을 순서 그대로 M개의 그룹으로 나누고자 한다.모든 그룹의 크기가 같을 때, 그룹의 최소 크기를 구하는 문제.이분 탐색을 통해서 최소 크기를 탐색한다.그룹의 최소 크기는 배열의 원소 중 가장 큰 원
\[boj] 13305. 주유소 (node.js)최종 도착지점까지 거쳐가는 구간 간의 거리와 주유소의 리터당 가격이 주어질 때,첫 번째 도시에서 마지막 도시로 이동하는 최소 비용을 구하는 문제그리디 알고리즘출발하려면 첫 번째 도시에서 반드시 주유를 해야 하므로, 첫 번
\[boj] 1912. 연속합 (node.js)연속합의 최댓값을 구하라.n의 최댓값이 100,000 이므로 시간 제한 내에 풀이하기 위해서는 O(N)의 풀이가 필요하다.일차원 배열 dp값을 채운 후 최댓값을 출력한다.점화식dp\[i] = Math.max(dp\[i-1]
\[boj] 2156. 포도주 시식 (node.js)점화식은 아래와 같다.i번째 포도주를 마시지 않는 경우의 최댓값 dpi = Math.max(OX, XX)dp\[i]\[0] = Math.max(dp\[i - 1]\[0], dp\[i - 1]\[1]);i번쨰 포도주를
\[boj] 2090. 조화평균 (node.js)100을 넘지 않는 자연수 n개(최대 9)가 주어질 때,주어진 모든 자연수에 대해서분수 형태로 (1 / 자연수) 의 값을 모두 더한 뒤분모와 분자를 바꾼 결과값을 구하라.이때 표현 가능한 답의 형태 중 기약분수 형태로 출
\[boj] 15681. 트리와 쿼리 (node.js)주어진 무방향 트리에서 '입력된 정점을 루트로 하는 서브트리에 속한 정점의 수를 출력한다' 는 쿼리가 주어질 때, 이 쿼리를 만족하는 결과를 구현하는 문제루트 노드가 주어진다.주어진 트리를 입력받은 후, 루트 노드에
\[boj] 14501. 퇴사 (node.js)기본 원칙도착하는 날짜가 존재함이 확인되어야 이전 값을 더함코드재귀함수ndateIdx > N 이면 다음 날짜가 존재하지 않으므로 더하지 않음, sum 리턴ndateIdx == N + 1 이면 바로 다음날이 도착일이므로 su
\[boj] 7576. 토마토 (node.js)분명 올바르게 코드를 짠 것 같은데 시간초과로 넘어가질 않아, Queue 를 클래스로 구현하니 시간 내에 올바르게 풀이할 수 있었다.전형적인 bfs 문제로, 탐색해야 하는 모든 영역을 탐색했다면 최소 거리를 출력하고, 탐색
\[boj] 2661. 좋은수열 (node.js)1, 2, 3의 세 수만을 사용해서 길이가 N인 '좋은 수열'을 구하는 문제다.좋은 수열은 수열 내부에서 임의의 길이를 가진 수열을 연속해서 선택했을 때, 그 어떤 수열도 동일하지 않은 경우를 말한다.조건에 따라 자릿수에
\[boj] 14267. 회사 문화 1 (node.js)알고리즘만 보면 일반적인 bfs, 트리 탐색 문제다. 자료구조를 저장해둔 후, dfs를 통해 하위 노드를 탐색하여 점수를 계산한다.다만, 주어진 점수(간선의 가중치)를 한 줄씩 입력받아 매번 dfs()를 호출해 점
\[boj] 1002. 터렛 (node.js)두 원의 위치관계에서, 중심 사이의 거리와 두 원의 반지름의 길이를 통해 접점의 개수를 파악하는 문제.원의 위치관계는 중심 사이의 거리와 반지름의 차, 합을 알면 구할 수 있다.먼저, 내접과 외접을 구분할 줄 알아야 어떤 조
\[boj] 9020. 골드바흐의 추측 (node.js)골드바흐의 추측은 정수론 개념 중 하나로, '2보다 큰 모든 짝수는 두 소수의 합으로 나타낼 수 있다.'를 뜻한다.주어진 짝수에 대해 골드바흐의 추측을 만족하는 두 소수를 골드바흐 파티션이라고 할 때, 주어진 수에
\[boj] 21608. 상어 초등학교 (node.js)조건을 만족하도록 알고리즘을 구현하고 결과를 하나의 값으로 출력하는 문제아래 코드는 길지만, 요구조건을 - solution() 함수 내에 쪼개 두었기 때문에 함수를 접어보면 상당히 간단하다.먼저 입력을 받아두고,
문제 요약 [boj] 18870. 좌표 압축 (node.js) 문제에서 주어진 좌표의 순서대로, 각 좌표마다 계산 결과를 출력하는 문제 계산할 것: 해당 수보다 작은 수 (중복되지 않는)의 개수! 풀이 문제에서 중복되지 않으며 해당 수보다 작은 수의 개수를 구하
\[boj] 2309. 일곱 난쟁이 (node.js)조건에 맞도록 완전탐색을 수행한 후, 조건에 맞는 답을 정렬하여 출력used 와 sum 배열은 둘 다 rec함수 외부에 선언하고, k (몇 번째 자리)만을 인자로 전달하는 경우\-> sum, used 값이 매 재귀마다
\[boj] 10828. 스택 (node.js)문제에서 원하는 결과를 출력할 수 있도록 스택을 구현하는 문제스택 클래스를 정의해서 풀이했다. push, pop 메서드를 정의해 데이터 삽입과 삭제를 구현했다.큐와 마찬가지로 노드를 활용해서 연결한다. 링크드리스트에서 작동
\[boj] 17413. 단어 뒤집기 2 (node.js)문제에 제시된 조건에 따라 주어진 문자열에서 태그와 단어들 구분하여 단어인 경우만 뒤집어서 출력하는 문제!문자열의 모든 문자를 확인한다. 이때, 태그의 시작이 발견되면 reverse 처리하지 않기 위해 while
\[boj] 10820. 문자열 분석 (node.js)문제의 요구조건에 따라 조건문을 활용하면 무리 없이 구현할 수 있는 간단한 문제였다. 하나씩 구현했고, N도 100을 넘지 않아 수월하게 풀이했으나, 시간복잡도도 높고 풀이법이 아쉬웠다.더 나은 방법이 있었다! ch
\[boj] 17298. 오큰수 (node.js)오큰수 (NGE, 해당 수의 오른쪽 수 중 그 수보다 크면서 가장 가까운 수)를 찾는 문제모든 인덱스를 순회하며 값을 확인해서 스택에 push, pop 여부를 결정하므로, for 문 내부에 로직을 구성할 수 있다.따라서
\[boj] 1062. 가르침 (node.js)너무 어렵게 푼 것 같은 감이 있다.. ㅠㅠ 크게 입력받고 전처리하는 부분, 재귀 함수, 점수 계산 함수의 세 파트로 나눌 수 있다.anta ~ tica -> 5개의 문자 'acint' 는 모든 단어에 포함되므로 항상 배워
\[boj] 2609. 최대공약수와 최소공배수 (node.js)유클리드 호제법의 개념을 담은 코드! 가장 간단한 양식의 코드라 복습을 위해 기록해 둔다.유클리드 호제법a = bq + rGCD(a, b) == GCD(b, r) == ... == GCD(b, 0) <
\[boj] 6588. 골드바흐의 추측 (node.js)4보다 큰 모든 짝수는 두 홀수 소수의 합으로 나타낼 수 있다.위의 골드바흐의 추측에 대해, 짝수가 주어질 때 골드바흐의 추측을 검증하는 문제에라토스테네스의 체를 먼저 구현하여 0, 1로 소수 여부를 판별하여 배열
\[boj] 2004. 조합 0의 개수 (node.js)조합은 팩토리얼로 바꿀 수 있고, 팩토리얼에서의 인수의 개수를 확인하는 문제로 바꿔 생각할 수 있다.뒤에서부터 0의 개수는, 10 = 2 \* 5 이므로 2의 인수의 개수와 5의 인수의 개수 중 더 작은 수와 같다
\[boj] 11053. 가장 긴 증가하는 부분 수열 (node.js)최장 증가 수열 (LIS, Longest Increasing Subsequence) 문제다.동적 프로그래밍 기법으로 이전 항까지의 최장 수열 길이를 저장해둔 후, 그 결과를 활용하여 각 숫자에서의 최
\[boj] 10844. 쉬운 계단 수 (node.js)N이 주어질 때, N자리 숫자 중 계단 수의 총 개수를 알아내는 문제점화식을 수도코드로 적어보자면 아래와 같다. (초기화, 나머지 로직 생략한 핵심)점화식을 세울 때 명확한 근거를 통해 세워야 한다.처음 접근했을
\[boj] 13398. 연속합 2 (node.js)최대 연속합을 구하는 문제최소한 하나의 숫자가 연속되어야 하며, 하나의 숫자를 제거(무시)할 수 있다.배열을 순회하며 N번째 원소까지의 최대 연속합을 구한다.제거 조건: 연속합은 양수를 더하는 경우 항상 증가하므로,
\[boj] 11054. 가장 긴 바이토닉 부분 수열 (node.js)특정 수를 기준으로 좌측, 우측 수들을 항상 증가하는 부분 수열이 되도록 고를 수 있다.수열 S가 어떤 수 Sk를 기준으로 S1 < S2 < ... Sk-1 < Sk > Sk+1 >
\[boj] 17404. RGB거리 2 (node.js)1번과 N번 집을 제외한 2 ~ N-1 번째 집은 모두 양 옆의 집과 색이 달라야 한다.따라서 1번 집부터 색칠한다고 할 때, 다음 집의 색을 칠할 때 이전 집을 고려한다. 이렇게 하면 이전 집 기준으로 다음 집의
\[boj] 2133. 타일 채우기 (node.js)벽의 가로 길이가 주어진다. 이때, 주어진 타일로 채울 수 있는 경우의 수를 구하는 문제홀수인 경우 완성할 수 있는 경우가 존재하지 않으므로 0으로 초기화한다.짝수인 경우만 고려한다.해를 구하기 위해 경우의 수를 생각
\[boj] 10971. 외판원 순회 2 (node.js)rec() 함수로 브루트포스를 구현했다. i -> j 도시로 이동 불가능한 경우는 모두 반환처리해주고, visited 배열을 이용해 방문 여부를 표시한다. 배열을 함수 외부에 두고 인덱스로 접근해서 반환하는 경우
\[boj] 16194. 카드 구매하기 2 (node.js)이 문제에서는 카드의 개수가 1개일 때, 2개일 때, ... 지불 가능한 비용의 최솟값을 매번 갱신해주고 그 값을 다음 계산에서 바로 활용하는 게 핵심이다.dp\[N] = N개의 카드로 지불해야 하는 금액의 최
\[boj] 11660. 구간 합 구하기 5 (node.js)문제를 이해하는 것은 간단하나, 직관적으로 떠올릴 수 있는 답인 이중 반복문을 사용해 풀이하는 경우 시간 초과가 발생하는 문제다.구간의 누적합을 구할 때 동적 프로그래밍 기법을 사용해 문제를 풀이하는 것이 시
\[boj] 1475. 방 번호 (node.js)유형: 구현난이도: 실버 5최근에 공부한 게 재미있는 리액트이다보니 Object destructing 을 즐겨 사용하고 있다. 로직에서 핵심은 "6과 9는 동일한 역할을 한다"는 점인데, 따라서 6과 9는 그 총 개수를
\[boj] 14500. 테트로미노 (node.js)문제에서 제시된 4칸짜리 테트로미노를 대칭, 회전까지 포함해서 활용할 때, 포함하는 숫자의 총합이 최대가 되게끔 테트로미노를 위치시키려 한다. 이때 위치에 적힌 값의 총합을 구하는 문제다.문제에서 제시한 테트리미노는
\[boj] 15686. 치킨 배달 (node.js)브루트포스 + 구현문제! 재귀함수로 모든 후보군을 탐색하고, 그에 따른 값을 계산해서 최솟값을 구하면 된다.값을 계산할 때는 후보군이 될 수 있는 치킨가게와, 집들 간의 거리만 계산하면 되므로 이중포문을 사용해 구할