세그먼트 트리여러 개의 데이터가 존재할 때 특정 구간의 합(최솟값, 곱 등)을 구하는데 사용하는 자료구조이다.트리 종류 중 하나로 이진 트리의 형태이며, 특정 구간의 합을 가장 빠르게 구할 수 있다.시간 복잡도는 O(logN)언제 사용할까 ?0123456789위와 같은 배열에서 2부터 8까지의 데이터를 더하려면 범위의 원소를 하나씩 다 더하면 된다.이러한 방식으로 다른 특정 구간의 합을 구한다고 고려했을 때 앞에서 하나씩 더하므로 데이터의 갯수가 N이면 시간 복잡도는 O(N)이다.따라서, 이러한 방식으로 구간의 합을 구하면 속도가 너무 느리기 때문에 더 좋은 방법이 필요하다.이 때, 더 좋은 방법은 세그먼트 트리(Segment Tree)를 사용하는 것이다. 세그먼트 트리란 ?맨 밑(leaf) 노드는 자기..
백준 1676번 - 팩토리얼 0의 개수(Node.js)https://www.acmicpc.net/problem/1676 첫 번째 나의 풀이처음 내가 이 문제를 보고 생각한 것을 위의 코드를 보고 설명할 것이다.9 ~ 11번째 줄은 입력된 N에 따라 N!을 계산하는 코드이다.13번째 줄은 구한 N!의 값을 split() 메서드를 이용하여 하나씩 잘라주고 그 값을 answer에 넣어주었다. *split()메서드를 이용하기 위해서 문자열로 만드는 작업이 필요하기 때문에 String()을 사용하여 문자열로 만드는 작업을 해주었다.15 ~ 21번째 줄은 위의 split() 메서드를 이용하여 자른 결과의 배열인 answer를 뒤에서부터 반복문을 사용하여 "0"이 나오면 count를 1씩 더해주고, "0"이 아닌..