배열 내의 두 수를 더해서 target 과 같은 수가 나온다면 그 두 수를 배열로 return해주는 문제이다. 1번 문제이다보니 비교적 간단한 풀이를 통해 해답을 구해 테스트 케이스를 통과할 수 있었다. 시간복잡도를 따진다면 다른 방법이 있을것이니 더 좋은 방법이 구
정수인 숫자를 인자로 받아 거꾸로 뒤집어서 리턴하는 과정이다. 배열을 뒤집는 reverse 함수를 통해서 구현하면 쉽게 구현할 수 있을거란 생각이 들었다. 뒤집은 후 문자열이 음수일 경우 끝에 '-'가 남게 되는데, parseInt 를 통해 정수만을 반환할 수 있다.
String 형의 한 단어를 인자로 받아 그 안에서 중복되지 않은 알파벳으로 이어진 제일 긴 단어의 길이를 반환하는 문제이다. 문제가 처음엔 이해가 잘 안됬는데, 반환하는 제일 긴 단어 내에서 중복되는 알파벳이 없도록 해주면 되기에, 첫 글자를 기준으로 잡으면서 단어를
\*\*\`앞서 풀었던 2번과 유사한 문제였고, reverse() 메소드와 split()의 개념이 유용하게 사용될 수 있다는 점을 알았고, 다른 메소드에 대해 공부하기로 하였다.
복수의 단어가 들어가있는 배열에서 그 각각의 element에 중복되는 단어를 반환하는 문제다. 첫번째 index의 단어를 기준으로 두번째와 세번째 단어에 indexOf 메소드를 적용하면 접근이 용이할 것 같아 그런 식으로 접근을 해보았으며, 이후 첫 단어를 slice
로마자(문자열)를 인자로 받아 그에 해당하는 수를 반환하는 문제이다. 로마자의 정해진 규칙(첫자리가 4 혹은 9일 경우)의 패턴을 살피다 보니 문제를 풀 수 있었다. 문제에서 요구하는 점이 무엇인지를 정확히 파악하는 것이 가장 빠른 길을 안내한다고 느꼈다. 처음에는
숫자로 이루어진 배열에서 과반수가 넘는 숫자를 반환하는 문제이다. 객체를 통해 숫자마다의 key와 value를 이루어 준 후 그 중 가장 빈도수가 높은 key 값을 리턴해주기로 했다. 객체의 성질을 이용하여 문제를 풀었다. 문제를 풀 때 직관적으로 논리의 흐름을 따라
괄호만으로 이루어진 문자열에서 위 예시의 false 경우처럼 문법에 맞지 않는 경우 false를 return해주고, 문법에 맞을 경우 true를 return해주는 문제이다. false가 나오는 경우의 패턴에 대해 곰곰히 생각해보았을 때, 모든 경우에서 여는 괄호 다
배열 안의 각 수가 등장한 빈도수에 따라 k개의 갯수만큼 내림차순으로 배열로 받아 return해주는 문제이다. 객체의 성질을 활용하여 각 수와 해당 빈도수를 지정해주고, 내림차순으로 정렬해주어 k개만큼만 배열로 반환해주면 되는 문제기에 논리적 접근은 어렵지 않았다.
height 배열 안에는 배열 이름처럼 그래프의 높이가 각각 주어져있다. 위와 같은 그래프에서 물의 면적은 (두 축 중 짧은 축의 높이\* 두 축 사이의 거리)가 된다. 즉, 구한 값 중에서 가장 큰 값을 return하면 문제를 해결할 수 있는 것이다. 코드 상단에
두 개의 input에 복소수(complex number)가 string 으로 주어집니다. 복소수란 a+bi 의 형태로, 실수와 허수로 이루어진 수입니다.input으로 받은 두 수를 곱해서 반환해주세요. 반환하는 표현도 복소수 형태의 string 이어야 합니다.복소수 정
문자로 구성된 배열을 input으로 전달하면, 문자를 뒤집어서 return 해주세요.새로운 배열을 선언하면 안 됩니다.인자로 받은 배열을 수정해서 만들어주세요.인자로 받은 s값을 reverse()메서드로 뒤집어서 반환한다.풀이 2와 3 둘다 반복문으로 기준값을 찾아 양
양수로 이루어진 m x n 그리드를 인자로 드립니다. 상단 왼쪽에서 시작하여, 하단 오른쪽까지 가는 길의 요소를 다 더했을 때, 가장 작은 합을 찾아서 return 해주세요.한 지점에서 우측이나 아래로만 이동할 수 있습니다.설명: 1→3→1→1→1 의 합이 제일 작음O
주어진 숫자 배열에서, 0을 배열의 마지막쪽으로 이동시켜주세요. 원래 있던 숫자의 순서는 바꾸지 말아주세요.(새로운 배열을 생성해서는 안 됩니다.)Input: 0,1,0,3,12Output: 1,3,12,0,0
재귀를 사용하여 팩토리얼(factorial)을 구하는 함수를 구현해주세요. 팩토리얼이란 1에서부터 n까지의 정수를 모두 곱한것을 말합니다. 재귀 함수를 통해 구현을 하면 되기 때문에 함수 내에서 재귀적으로 팩토리얼 인자를 쌓아 곱해주도록 해주면 될 것이라고 생각했다.코
양수 N을 이진법으로 바꿨을 때, 연속으로 이어지는 0의 갯수가 가장 큰 값을 return해 주세요.이어지는 0은 1과 1사이에 있는 것을 의미합니다.1과 1사이에 있는 0을 binary gap 이라고 하겠습니다.설명: 9의 이진수는 1001 입니다. 1과 1사이에 있
문제 >prices는 배열이며, 각 요소는 매일의 주식 가격입니다. 만약 한 번만 거래할 수 있다면 = 사고 팔 수 있다면, 제일 큰 이익은 얼마일까요? 설명: 2일(가격=1)에 샀다가 5일(가격=6)에 사는 것이 6-1이라 제일 큰 수익 7-1=6 은 안 되는거
각각의 단어의 이루어진 철자가 같으면 그 단어들을 grouping해주는 문제이다. 문제에 대한 접근은 우선 모든 단어를 sort()를 통해 정렬해주면 이루어지는 철자가 같다면 같은 단어가 형성되기 때문에 그러한 집단을 객체를 통해 grouping해주어 배열을 추출해주
숫자로만 이루어진 배열에서, 연속적인 요소를 더했을 때 가장 큰 값이 나오는 경우, 그 값을 return 해주는 문제이다. 2중 반복문을 통해 배열의 갯수만큼의 배열을 만들고, 그 안에서 가장 큰 값들을 배열로 이뤄준 후, 그 중 최댓값을 Math.max() 메소드로
이진탐색을 배우기 전에 선형탐색(Linear Search)먼저 보겠습니다. 선형탐색이나, 이진탐색의 요소는 오름차순이나 내림차순으로 되어 있어야 적용할 수 있는 알고리즘입니다.let arr = \[2, 4, 6, 8, 11, 14];위의 배열에서 요소가 8인것을 찾으려
업무를 하면서 알고리즘을 사용할일이 상당히 많다고 느꼈다. 학부 시절에 배웠던 BFS, DFS 를 javascript로 구현하는 것을 목표로 구현을 시도해보았다. (C++이나 Java보다 훨씬 쉽게 구현이 가능하였다!) BFS & DFS > - BFS : 너비 우선 탐색(BFS, Breadth-First Search) BFS 방식 : A - B - C ...