배열을 입력받아 차례대로 배열의 첫 요소와 마지막 요소를 키와 값으로 하는 객체를 리턴해야 합니다. > 예시 > 생각 > 1. 빈 배열에 arr의 첫번째 인덱스와 마지막 인덱스 값을 넣어야겠다. key와 value를 입력해야하므로 braket notation을 이용해 key값을 넣어줘야겠다. > 풀이 > 깨달은 점 > 1. 객체에 key 값을 할...
연이율을 입력받아 원금이 2배 이상이 될 때 까지 걸리는 시간(년)을 리턴해야 합니다. > 예시 > 생각 > 1. 연 이율을 입력받아 1년 이자를 구한다. > 2. 구한 이자를 원금에 더해나간다. 반복문을 사용해야 겠구나 > 3. 처음원금*2 === 현재원금 이면 시간(년)을 리턴 > 4. 처음원금*2 !== 현재원금 이면 계속 더해나가자. > 5. 필...
수를 입력받아 2의 거듭제곱인지 여부를 리턴해야 합니다. > 예시 > 생각 > 1. 2의 거듭제곱이므로 짝수다. 짝수의 특징은 2로 계속 나누었을 때 나머지가 0이 나오거나 2를 계속 뺐을 때 0이 나온다는 성질을 이용해보자. > 2. while문을 사용해야 하므로, 주어진 값이 true일 때 까지 2로 나누거나 빼보자 > 풀이 > 깨달은 점 > 1...
문자열을 입력받아 문자열을 구성하는 각 단어의 첫 글자로 이루어진 문자열을 리턴해야 합니다. >예시 > 생각 > * 문자열에 공백이 있으므로 공백을 기준으로 문자열을 나눈다. > * 나눈 문자열마다 맨 앞 인덱스를 골라내서 빈 문자열에 넣어준다. > 풀이 > 깨달은 점 > * 기존의 것에 계속 더해줄 때는 a = a + b 포맷이고, 하나의 값이 ...
문자열을 입력받아 순서가 뒤집힌 문자열을 리턴해야 합니다. > 예시 > 생각 > * reverse 함수를 이용해서 문자 요소로 쪼개고, join으로 합치자 > 풀이 > 깨달은 점 > * join의 편리한 점을 느낄 수 있었다. join은 문자열을 배열로 바꿔주는 유용한 함수다.
문자열을 입력받아 문자열을 구성하는 각 단어의 첫 글자가 대문자인 문자열을 리턴해야 합니다. > 예시 > 생각 > * 공백을 기준으로 문자열을 나누자 (split) > * 문자열의 첫번째 요소를 대문자, 나머지 요소를 소문자로 만들자 (toUpperCase,toLowerCase) > * split으로 배열이 됐으니 다시 문자열로 바꾸자.(join) >...
함수들을 입력받아 함수들이 입력된 차례대로 결합된 새로운 함수를 리턴해야 합니다. > 예시 > 생각 > * 처음에 아무 생각이 안남 > * 여러함수들이 들어오는 걸 정의해야 하므로 ...funcs(spread syntax)를 함수의 매개변수로 하자 > * for문으
2차원 배열을 입력받아 각 배열을 이용해 만든 객체를 리턴해야 합니다. > 예시 > 생각 > * 빈 배열에 각 요소의 첫번째를 key로, 두번째를 value로 할당하자. > * 길이가 0인 경우는 빈 객체 리턴 예외처리 >풀이 > 깨달은점 > * resultarr[i === undefined 가 무슨의미인가..?
설명 > * 정수를 요소를 갖는 배열을 입력받아 3개의 요소를 곱해 나올 수 있는 최대값을 리턴해야 합니다. 예시 생각 > 1. 우선 오름차순으로 정렬하자. 음수가 있는 경우와 아닌 경우를 생각해보자 음수가 있다면 뒤에 음수 2개를 곱하면 양수가 되고, 거기에 배열
설명 > * 정수를 요소로 갖는 배열을 입력받아 오름차순으로 정렬하여 리턴해야 합니다. 예시 생각 > 1. 삽입 정렬을 우선 공부하자. 삽입정렬은 두번째 인덱스부터 시작하며 왼쪽에 있는 값이 자신보다 크면 오른쪽으로 한 칸 옮기는 방식이다. for문으로 두번째 요소
설명 > * 임의의 tree를 구성하는 노드 중 하나의 Node 객체를 입력받아, 해당 노드를 시작으로 너비 우선 탐색(BFS, Breadth First Search)을 합니다. 이 때, 탐색되는 순서대로 노드의 값이 저장된 배열을 리턴해야 합니다. 예시 생각 >
설명 > * 부분적으로 오름차순 정렬 된 정수의 배열(rotated)와 정수(target)를 입력받아 target의 인덱스를 리턴해야 한다. > * 부분적으로 정렬된 배열 : 배열을 왼쪽 혹은 오른쪽으로 0칸 이상 순환 이동할 경우 완전히 정렬되는 배열 > * 예시 :
설명 > 두 개의 배열(base, sample)을 입력받아 sample이 base의 부분집합인지 여부를 리턴해야 합니다. 예시 생각 sample의 요소가 base의 요소와 일치하면 true를 리턴하고 같지 않은 요소가 있다면 if문을 벗어나 false를 리턴해야겠
설명 > 정수를 요소로 갖는 배열을 입력받아 오름차순으로 정렬하여 리턴해야 합니다. 버블정렬이란? 옆에 있는 값과 비교해서 더 작은 값을 앞으로 보내는 알고리즘이다. 배열의 왼쪽부터 2개씩 요소를 비교하며 오름차순으로 정렬하는데 특징은 정렬을 1회전 할 때마다 정렬에서 제외되는 데이터가 하나씩 늘어난다. 또한 1회전이 끝날 때마다 비교하는 정렬의 크기가...
세로길이 2, 가로 길이 n인 2xn 보드가 있습니다. 2x1 크기의 타일을 가지고 이 보드를 채우는 모든 경우의 수를 리턴해야 합니다.2x1 타일을 가지고 가로길이가 1씩 늘어날 때마다 경우의 수 를 세보았다. 그 결과 1,2,3,5,8 의 수를 가진다는 것을 알
임의의 tree를 구성하는 노드 중 하나의 Node 객체를 입력받아, 해당 노드를 시작으로 깊이 우선 탐색(DFS, Depth First Search)을 합니다. 이 때, 탐색되는 순서대로 노드의 값이 저장된 배열을 리턴해야 합니다. DFS를 이해하기 어려웠는데, r
설명 임의의 tree를 구성하는 노드 중 하나의 Node 객체를 입력받아, 해당 노드를 시작으로 깊이 우선 탐색(DFS, Depth First Search)을 합니다. 이 때, 탐색되는 순서대로 노드의 값이 저장된 배열을 리턴해야 합니다. 예시 let root = n
설명 오름차순 정렬된 정수의 배열(arr)과 정수(target)를 입력받아 target의 인덱스를 리턴해야 합니다. 예시 생각 풀이 깨달은 점
임의의 tree를 구성하는 노드 중 하나의 Node 객체를 입력받아, 해당 노드를 시작으로 너비 우선 탐색(BFS, Breadth First Search)을 합니다. 이 때, 탐색되는 순서대로 노드의 값이 저장된 배열을 리턴해야 합니다.BFS는 노드의 같은 너비에 있는
내가 풀 수 없는 문제
문자열을 입력받아 문자열 내의 모든 괄호의 짝이 맞는지 여부를 리턴해야 합니다.다음 단계에 맞춰 함수를 작성해 보세요괄호의 종류를 단 한가지로 한정합니다.괄호의 종류를 늘려 모든 종류의 괄호에도 작동하도록 합니다.괄호를 제외한 문자열이 포함된 경우에도 작동하도록 합니다
피보나치 수열을 순차적으로 출력하는 클로저 형태의 함수를 작성해야 합니다.피보나치 수는 0과 1로 시작하며, 다음 피보나치 수는 바로 앞의 두 피보나치 수의 합이 됩니다.예시) 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, ...리턴
설명 방향이 없는 간선들의 목록이 주어질 때, 연결된 정점의 컴포넌트(그룹들)가 몇 개인지 반환하는 함수를 작성하세요. 예시 생각 bfs를 통해 시작점으로부터 같은너비에 방문할 수 있는 점들을 찾은 다음, bfs문이 끝나면 카운트를 해서 정점을 묶어서 리턴한다는 생각을 갖자. 풀이 깨달은 점
설명 > 정수를 요소로 갖는 배열을 입력받아 오름차순으로 정렬하여 리턴해야 합니다. 예시 생각 삽입정렬은 보통 오른쪽으로 순회하던 반복문을 왼쪽으로 순회하면서 기준값 보다 왼쪽 값이 크면 기준값을 해당 값으로 바꾼다. 그 전에 기준값을 다른 변수에 저장해서 왼쪽 값에 재할당한다. 이것을 반복하면 된다. 풀이 > 깨달은 점 tmp를 설정한 이유는 ...
정수를 요소로 갖는 배열을 입력받아 오름차순으로 정렬하여 리턴해야 합니다.퀵정렬은 처음 값을 기준으로 값이 작으면 왼쪽배열에 값이 크다면 오른쪽배열에 배치한다. 기준점을 기준으로 left,right 배열을 만들었다.여기서 재귀함수를 통해 left,right 배열을 각
정수를 요소로 갖는 배열을 입력받아 오름차순으로 정렬하여 리턴해야 합니다.병합정렬은 배열을 왼쪽,오른쪽으로 재귀적으로 나눠 하나의 요소만 남을 때까지 반복하고, 이를 다시 정렬하면서 합치는 정렬 방법이다.Javascript는 싱글스레드이기 때문에 기본적으로 한개의 작
중복순열 + 재귀
순열 문제
IP & TCP & UDP 이해하기