728x90
반응형

Tree 3

백준, BOJ, 2243번, 사탕상자 : C++ [CPP]

indexed tree로 풀었다. 하지만 어떤 이유로 indexed tree로 풀었느냐..? Indexed tree는 해당 숫자가 많은데 update가 자주될 때.. 사용하는 것 같다. 난 그랬다. https://www.acmicpc.net/problem/2243 #맞은 풀이 #include using namespace std; int idx_tree[1 단말 노드에 100만개를 넣어야하기 때문. int n; int base;// 단말 노드의 처음 idx값 //p번째 맛의 캔디의 개수를 v만큼 바꾸는 것. void update(int p, long long v) { p += (base - 1); //base - 1을 하는 이유는 B가 1부터 시작하기 때문(0번째 idx를 제외하고 숫자시작) idx_tre..

Tree 자료구조

우리가 흔히 보는 위와 같은 그림이 트리구조이다. 왜 Tree냐면 나무를 거꾸로 박아놓은 것처럼 생겼기 때문이다. 그래서 시작이 Root Node라고 부른다. 실제로 물론 한 노드에 여러가지 노드를 가질 수 있지만 우리는 이진 트리, Binary Tree라고 가정하고 진행한다. 각 노드는 자신의 밑에 있는 2개의 노드를 가리킨다. struct Node{ std::string data; node* first; node* second; }; 각 노드들은 자신의 하위 노드를 가리킨다. 즉, 이를 통해서 계층적 구조를 나타낼 수 있다. 트리구조를 처음 만들기 위해서는 Root Node가 필요하다. 해당 노드는 처음에 first와 second가 NULL이다. 내가 예전에 썼던 글이다. 내가 다시 쓰기보다 아래 글..

CS Interview 2021.06.15

자료구조란 뭘까? (+추상자료형) (1)

자료구조에 대해 알아보겠습니다. 프로그램이라는 것은 data + 명령 또는 자료구조 + 알고리즘 이라고 볼 수 잇는데 여기서 좋은 프로그램이란 "시간 효율성" 과 " 공간 효율성" 이 뛰어난 것을 말한다. 또한 알고리즘이 잘 짜여져 있다는 것도 좋은 프로그램이라 말할 수 있겠죠? (알고리즘이란 문제 해결 과정을 뜻합니다.) 알고리즘의 조건에는 5가지정도가 있는데.. 1.입력: 0개 이상의 입력 2.출력: 1개 이상의 출력 3.명백성: 명령어의 의미가 명확 4.유한성: 일정한 단계 후에는 종료 5.유효성: 명령어들이 실행 가능해야 한다. 시간 효율성이란 말 그대로 같은 시간동안 얼마나 더 할 수 있느냐? 공간 효율성이란 말 그대로 같은 공간 (메모리) 안에서 얼마나 더 할 수 있느냐? 를 말한다. 일반적으..

728x90
반응형