본문 바로가기

C++

(44)
KickStart 2019 Round C - Wiggle Walk 문제 링크 : https://codingcompetitions.withgoogle.com/kickstart/round/0000000000050ff2/0000000000150aac Kick Start - Google’s Coding Competitions Hone your coding skills with algorithmic puzzles meant for students and those new to coding competitions. Participate in one round or join them all. codingcompetitions.withgoogle.com #include int main() { int T; scanf("%d", &T); /// for (int i = 0; i < T; ..
C++/STL List를 순회하는 방법 std::list std::list intList; 기존 방법 (iterator 사용) for(std::list::iterator itr = intList.begin(); itr != intList.end(); itr++){ printf("%d",**itr); } 향상된 for문을 이용한 탐색 for (int *ptr : intList){ printf("%d",*ptr); } for each문을 이용한 탐색 for each(int* i in intList){ printf("%d",*i); } iterator를 쓰지 않는 편이 깔끔하다!
[코딩인터뷰 완전정복] 4.3 깊이의 리스트 Q : 이진 트리가 주어졌을 때 같은 깊이에 있는 노드를 연결리스트로 연결해 주는 알고리즘을 설계하라. 즉, 트리의 깊이가 D라면 D개의 연결리스트를 만들어야 한다. ...더보기 template class TreeNode{ public: T data; TreeNode* parent; TreeNode* left; TreeNode* right; TreeNode(T data) { this->data = data; } }; template class ListNode { T data; ListNode* previous; ListNode* next; ListNode(T data) { this->data = data; } }; #include #include #include #include "Node.h" using..
[코딩인터뷰 완전정복] 4.2 최소트리 Q : 오름차순으로 정렬된 배열이 있다. 이 배열 안에 들어 있는 원소는 정수이며 중복된 값이 없다고 했을 때 높이가 최소가 되는 이진 탐색 트리를 만드는 알고리즘을 작성하라. ...더보기 template class TreeNode{ public: T data; TreeNode* parent; TreeNode* left; TreeNode* right; TreeNode(T data) { this->data = data; } }; template class ListNode { T data; ListNode* previous; ListNode* next; ListNode(T data) { this->data = data; } }; #include #include "Node.h" TreeNode* Minimum..
[코딩인터뷰 완전정복] 3.6 동물 보호소 Q : 먼저 들어온 동물이 먼저 나가는 동물 보호소가 있다고 하자. 이 보호소는 개와 고양이만 수용한다. 사람들은 보호소에서 가장 오래된 동물부터 입양할 수 있는데, 개와 고양이 중 어떤 동물을 데려갈지 선택할 수 있다. 하지만 특정한 동물을 지정해 데려갈 수는 없다. 이 시스템을 자료구조로 구현하라. 이 자료구조는 enqueue, dequeueAny, dequeueDog, dequeueCat의 연산을 제공해야 한다. 기본적으로 탑재되어 있는 LinkedList 자료구조를 사용해도 좋다. #include #include class Animal { public: int num; Animal(int n) { num = n; } }; class Dog : public Animal { public : Dog(i..
[코딩인터뷰 완전정복] 3.5 스택 정렬 Q : 가장 작은 값이 위로 오도록 스택을 정렬하는 프로그램을 작성하라. 추가적으로 하나 정도의 스택은 사용해도 괜찮지만, 스택에 보관된 요소를 배열 등의 다른 자료구조로 복사할 수는 없다. 스택은 push, pop, peek, isEmpty의 네가지 연산을 제공해야 한다. ...더보기 #include template class Stack { private: T *start; int nOfE; int size; public: Stack() { start = new T[10]; nOfE = 0; size = 10; } Stack(int N) { start = new T[N]; nOfE = 0; size = N; } void push(T n) { if (nOfE == size) { T *sizeIncreas..
[코딩인터뷰 완전정복] 3.4 스택으로 큐 Q : 스택 두 개로 큐 하나를 구현한 MyQueue 클래스를 구현하라. #include #include "Stack.h" class MyQueue {private: Stack in; Stack out; bool inputFlag;public: MyQueue() { inputFlag = true; } void push(int n) { if (!inputFlag) { while (out.Size > 0) { in.push(out.pop); } } inputFlag = true; in.push(n); } int pop() { if (inputFlag) { while (in.Size > 0) { out.push(in.pop); } } inputFlag = false; return out.pop(); }};pu..
[코딩인터뷰 완전정복] 3.3 접시 무더기 Q : 자료구조 SetOfStacks를 구현해 보라. SetOfStacks는 여러 개의 스택으로 구성되어 있으며, 이전 스택이 지정된 용량을 초과하는 경우 새로운 스택을 생성해야 한다. SetOfStacks.push()와 SetOfStacks.pop()은 스택이 하나인 경우와 동일하게 동작해야 한다. ...더보기 #include template class Stack { private: T *start; int nOfE; int size; public: Stack() { start = new T[10]; nOfE = 0; size = 10; } Stack(int N) { start = new T[N]; nOfE = 0; size = N; } void push(T n) { if (nOfE == size) {..