거듭제곱을 구하기 위해 일반적으로 Math.pow() 함수를 사용하거나 거듭제곱 연산자(\*\*) 를 사용한다. 하지만 이 경우 시간 복잡도가 O(n)이기 때문에 거듭제곱을 할 횟수가 늘어날 수록 엄청난 연산수가 필요하게 되고 메모리 활용이 비 효율적이게 된다.빠르게
재귀란 원래 자리로 되돌아오거나 되돌아옴을 의미함recursion함수를 호출했더니, 자기 자신을 끝없이 호출하면서 같은 코드가 계속해서 실행되는 것을 볼 수 있다.문제: 자연수로 이루어진 리스트(배열)를 입력받고, 리스트의 합을 리턴하는 함수 arrSum 을 작성하세요
JSON은 JavaScript Object Notation의 줄임말로, 데이터 교환을 위해 만들어진 객체 형태의 포맷입니다. 아래 객체의 내용을 다른 프로그램에다 전송한다고 가정했을 때, 이 객체 내용을 일종의 메신저 혹은 채팅 프로그램에서 쓰는 하나의 메시지라고 한다
큐(Queue)는 줄을 서서 기다리다, 대기행렬이라는 뜻을 가지고 있다.자료구조 Queue는 Stack과 반대되는 개념으로, 먼저 들어간 데이터가 먼저 나오는 FIFO 혹은 LILO을 특징으로 가지고 있다. 입력과 출력의 방향이 고정되어 있으며, 두 곳으로 접근이 가능
자료구조 Tree는 그래프의 여러 구조 중 단방향 그래프의 한 구조로, 하나의 뿌리로부터 가지가 사방으로 뻗은 형태가 나무와 닮아 있다고 해서 트리 구조라고 부른다.마치 가계도와 흡사해 보이는 이 트리 구조는 데이터가 바로 아래에 있는 하나 이상의 데이터에 한 개의 경
Stack은 쌓다, 쌓이다, 포개지다와 같은 뜻을 가지고 있다. 마치 접시를 쌓아 놓은 형태와 비슷한 이 자료구조는 데이터를 순서대로 쌓는 자료구조이다.자료구조 Stack의 특징은 입력과 출력이 하나의 방향으로 이루어진 제한적 접근에 있다.이런 Stack 자료구조 정책
많은 트리 모습 중, 가장 많이 사용하는 이진 트리와 이진 탐색 트리에 대해 알아보자.먼저, 이진 트리는 자식 노드가 최대 두 개인 노드들로 구성된 트리로, 두 개의 자식 노드는 왼쪽 자식 노드와 오른쪽 자식 노드로 나눌 수 있다.이진 트리는 자료의 삽입, 삭제 방법에
특정 목적을 위해 트리의 모든 노드를 한 번씩 방문하는 것을 트리 순회라고 한다. 1에서 10까지의 정수로 구성된 트리에서 3이라는 숫자를 찾기 위해 모든 노드를 방문하는 경우는 트리 순회의 한 예시이다. 트리 구조는 계층적 구조라는 특별한 특징을 가지기 때문에, 모든
그래프는 여러개의 점들이 서로 복잡하게 연결되어 있는 관계를 표현한 자료구조이다.직접적인 관계가 있는 경우 두 점 사이를 이어주는 선이 있다.간접적인 관계라면 몇 개의 점과 선에 걸쳐 이어진다.하나의 점을 그래프에서는 정점이라고 표현하고, 하나의 선은 간선이라고 한다.
Greedy Algorithm Greedy는 "탐욕스러운, 욕심 많은" 이란 뜻이다. Greedy Algorithm(탐욕 알고리즘)은 말 그대로 선택의 순간마다 당장 눈앞에 보이는 최적의 상황만을 쫓아 최종적인 해답에 도달하는 방법을 의미한다. 탐욕 알고리즘으로
모든 문제는 완전 탐색으로 풀 수 있다. 이 방법은 굉장히 단순하고 무식하지만 "답이 무조건 있다"는 강력함이 있다.예를 들어, 양의 정수 1부터 100까지의 임의의 요소가 오름차순으로 하나씩 담긴 배열 중, 원하는 값 N을 찾기 위해서는 배열의 첫 요소부터 마지막 요
시뮬레이션은 모든 과정과 조건이 제시되어, 그 과정을 거친 결과가 무엇인지 확인하는 유형이다. 보통 문제에서 설명해 준 로직 그대로 코드로 작성하면 되어서 문제 해결을 떠올리는 것 자체는 쉬울 수 있으나 길고 자세하여 코드로 옮기는 작업이 까다로울 수 있다.시뮬레이션에
Dynamic Programming(DP, 동적 계획법)은 탐욕 알고리즘(Greedy)과 함께 언급하며 줄임말로 DP 라고 하는 이 알고리즘은, 탐욕 알고리즘과 같이 작은 문제에서 출발한다는 점은 같다. 그러나, 탐욕 알고리즘이 매 순간 최적의 선택을 찾는 방식이라면,