출처 : 자바스크립트 알고리즘 문제풀이(코딩테스트 대비) - 김태원 인프런세 인자 값으로 삼각형을 만들 수 있는 지 판별하기삼각형이 되는 조건 : 가장 큰 값 < 나머 주 값의 합let 에 미리 YES라는 값을 부여하고 조건에 부합하지 않을 경우 'NO'를 주어
문자 'A'를 ' function solution(str) { //나의 풀이 let answer = str.replaceAll("A", " //선생님 풀이 let answer =''; for(let x of
숫자로 이루어진 배열 내에서 자신의 바로 앞 수보다 큰 수만 출력하는 함수 만들기 (1:가위, 2:바위, 3:보) 📌 A가 이기는 모든 경우의 수를 고려하여 풀어주면 된다. 정답에 맞을 경우 1점, 오답일 경우 0점이지만 연속으로 정답을 맞춘 경우 1씩 가산한다
(단, 회문을 검사할 때 대소문자를 구분하지 않음) 🚨 유의) str 뒤에 바로 reverse를 붙혀서는 안된다. 배열의 method를 string에 적용하고 싶다면 꼭 split을 써서 여러개의 문자열로 나누어줄 것(문자의 배열화). 그리고 join()을 써줌으로써
N개의 자연수가 입력되면 각 자연수의 자릿수의 합을 구하고, 그 합이 최대인 자연수를 출력 하는 프로그램을 작성하기. 자릿수의 합이 같은 경우 원래 숫자가 큰 숫자를 답으로 한다.N개의 자연수가 입력되면 각 자연수를 뒤집은 후 그 뒤집은 수가 소수이면 그 소수를 출력하
효율성(투포인터 알고리즘, 슬라이딩 윈도우, 해쉬) 두 배열 합치기 function solution(arr1, arr2) { // 나의 풀이 // let answer = []; // answe
괄호가 입력되면 올바른 괄호이면 “YES", 올바르지 않으면 ”NO"를 출력하는 프로그램.(())() 이것은 괄호의 쌍이 올바르게 위치하는 거지만, (()()))은 올바른 괄호가 아니다. 스택을 활용한 문제. 👉 스택 : 들어가는 입구와 나가는 출구가 동일한 구조
선택정렬을 이용하여 N개이 숫자가 입력되면 오름차순으로 정렬하여 출력하는 프로그램을 작성하기. 이중포문을 한다. i for문에서 idx라는 예비 지수를 설정하여 j로 이중 포문을 돌 때 arridx와 arrj를 비교하여 가장 작은 값 j를 idx의 값으로 할당한 뒤,
자기 자신을 호출하는 함수를 말한다. 마치 반복문을 돌리듯 자기 자신을 끊임없이 부르다가 특정 조건이 되면 빠져나오는 함수. 스택(stack)이라는 자료구조를 쓴다. 자연수 N이 입력되면 재귀함수를 이용하여 1부터 N까지를 출력하는 프로그램을 작성하기.1 2 3 순으로
부모노드에서 자식노드 두개씩 (왼쪽, 오른쪽)아래로 뻗어나가는 형태. 각각의 노드가 최대 두 개의 자식 노드를 가지는 트리 자료 구조로, 자식 노드를 각각 왼쪽 자식 노드와 오른쪽 자식 노드라고 한다. 시작 정점에서부터 특정 경로를 따라 가능한 멀리 있는 정점을 재귀적
N개의 문제를 풀려고 한다. 각 문제는 그것을 풀었을 때 얻는 점수와 푸는데 걸리는 시간이 주어지게 된다. 제한시간 M안에 N개의 문제 중 최대점수를 얻을 수 있도록 해야한다. (해당문제는 해당시간이 걸리면 푸는 걸로 간주.)주어진 시간과 문제의 점수, 푸는데 걸리
👉 answer에 최종값 DFS(n)을 할당하는 방식🙋♀️메모이제이션? 컴퓨터 프로그램이 동일한 계산을 반복해야 할 때, 이전에 계산한 값을 메모리에 저장함으로써 동일한 계산의 반복 수행을 제거하여 프로그램 실행 속도를 빠르게 하는 기술이다👉 중복해서 계산하는
G(V vertax, E edge) vertax(정점) : 노드, edge : 노드와 노드를 연결하는 간선, 변. 👉 정점(V)와 간선(E)으로 이루어진 집합각 노드가 연결되어있는 형태 (1번에서 2번으로 갈 수도 있고 2번에서 1번으로도 가능함) (양뱡향 그래프라고
🙋♀️ Breadth-First Search : 루트 노드(혹은 다른 임의의 노드)에서 시작해서 인접한 노드를 먼저 탐색하는 방법이다. 레벨별 탐색이라고도 한다. 즉, 깊게(deep) 탐색하기 전에 넓게(wide) 탐색하는 것이다.👉 BFS는 재귀적으로 동작하지
동적 계획법이란 하나의 복잡한 문제를 여러 개의 간단한 하위 문제로 나누어 푼 다음, 이를 결합하여 답을 도출해내는 방법이다. 나누어진 하위 문제들의 결과를 따로 저장해두었다가 이후 동일한 문제가 나왔을 시 저장해둔 결과를 가져다가 쓰면 같은 문제를 반복해서 풀지 않아
오늘의 알고리즘 문제 자바스크립트로 풀기! 문제는 위와 같다. 사실 이 문제를 보자마자 떠오른 건 이중포문을 돌려서 조건에 일치하는 index 값들을 배열화하여 리턴하는 것이었다. 생각한 방식은 다음과 같다. 그런데 사실 배열 내 아이템이 4개라 얼마 안걸릴지 몰
내가 생각한 로직은 다음과 같다.빈 문자열을 담은 변수 answer을 만든다.strs라는 배열의 첫번째 단어를 for문을 돌린다.for문을 돌며 answer 안에 한 단어씩 넣어준다.한 단어 씩 넣어줄 때 for문안에서 배열의 두번째 단어부터 끝까지 도는 for문을 돌
내가 생각한 로직▪️ max = 중복되지 않은 알파벳으로 이루어진 제일 긴 단어의 길이 (cnt의 최대값)▪️ s = 중복되지 않은 알파벳으로 이루어진 단어▪️ cnt = s의 길이 파라미터로 받은 str 이라는 문자열을 for of를 돌리며, str의 단어 중 s라는
Big O? > 여러 문제 해결 방법 중 무엇이 가장 좋은 지 알 수 있다. 코드의 일반화를 통해 분류된 이름을 붙힌다. Big O Notation? > 애매한 측량을 정형화한 방법. 알고리즘에 입력값이 커짐에 따라 실행시간이 늘어나는 정도의 관계. 추세에만 신경쓰는
객체의 빅오 객체? 순서가 정해져 있지 않고 빠르다. 👉 Insertion - O(1) 👉 Removal - O(1) 👉 Searching - O(N) // key의 갯수(n) 늘어날 수록 찾는 시간이 늘어난다. 👉 Access - O(1) 객체 메소드들의 빅
문제해결 패턴 1. 빈도수 세기 패턴 이 패턴은 object나 set의 값과 빈도를 수집하는데에 사용 된다. 주로 nested loops를 안해도 되게끔 해준다. 주로 O(n)의 답을 가져다준다. ex) 두 배열을 받는 same이라는 함수를 적어라. 이 함수는
객체 또는 map을 만들어준다.인자로 받은 배열 개수를 새며 아이템은 key 값으로, 아이템의 갯수는 value로 저장을 한다. 아이템 중 갯수가 과반수 이상인 것을 return한다.풀이는 아래와 같다. Map을 이용해서 해도 동일한 로직이다.객체를 이용하지 않고도 풀
stack이라는 빈 배열을 만든다.받은 인자값으로 for문을 돌려 열린 괄호라면 stack에 넣어주고, 닫힌 괄호라면 stack에 가장 마지막에 들어간 아이템과 동일만 모양인지 확인하고 맞다면 배열에서 꺼내준다.(pop())최종적으로 남은 stack의 길이가 0이라면
빈 객체를 만든다.nums를 돌며 객체의 key값을 nums의 고유한 값들로, value값을 그 고유한 값의 개수로 만들어준다.Object.entries를 이용하여 배열의 형식으로 만들어준 뒤 value값을 기준으로 내림차순 sort 해준다.그리고 다시 mapping하
문제) 인자인 height는 숫자로 이루어진 배열입니다. 그래프로 생각한다면 y축의 값이고, 높이 값을 갖고 있습니다. 아래의 그래프라면 height 배열은 [1, 8, 6, 2, 5, 4, 8, 3, 7] 입니다. 저 그래프에 물을 담는다고 생각하고, 물을 담