분류 전체보기
[C++] BaekJoon / 11399번 / ATM
- 문제 인하은행에는 ATM이 1대밖에 없다. 지금 이 ATM앞에 N명의 사람들이 줄을 서있다. 사람은 1번부터 N번까지 번호가 매겨져 있으며, i번 사람이 돈을 인출하는데 걸리는 시간은 Pi분이다. 사람들이 줄을 서는 순서에 따라서, 돈을 인출하는데 필요한 시간의 합이 달라지게 된다. 예를 들어, 총 5명이 있고, P1 = 3, P2 = 1, P3 = 4, P4 = 3, P5 = 2 인 경우를 생각해보자. [1, 2, 3, 4, 5] 순서로 줄을 선다면, 1번 사람은 3분만에 돈을 뽑을 수 있다. 2번 사람은 1번 사람이 돈을 뽑을 때 까지 기다려야 하기 때문에, 3+1 = 4분이 걸리게 된다. 3번 사람은 1번, 2번 사람이 돈을 뽑을 때까지 기다려야 하기 때문에, 총 3+1+4 = 8분이 필요하게 ..
C++ / 연결 리스트
#pragma once // 노드 구조체 템플릿 template struct Node { T data; Node* prevNode;// 이전 노드의 주소 Node* nextNode;// 다음 노드의 주소 Node() : data() , prevNode(nullptr) , nextNode(nullptr) { } Node(const T& data, Node* prevNode, Node* nextNode) : data(data) , prevNode(prevNode) , nextNode(nextNode) { } }; // 리스트 클래스 템플릿 template class LinkedList { private: Node* headNode; // 연결 리스트의 맨 앞의 노드 Node* tailNode; // 연결 리..
C++ / 동적 배열
#pragma once #include "assert.h" // 동적 배열 클래스 템플릿 template class DynamicArray { private: T* adress;// 배열의 첫번째 인덱스 주소 int dataCount; // 배열에 저장된 요소의 개수 int maxCount; // 현재 배열에 저장할 수 있는 최대 요소의 개수 public: void push_back(const T& data); void resize(int size); T& operator [] (int index); public: DynamicArray(); ~DynamicArray(); }; template DynamicArray::DynamicArray() : adress(nullptr) , dataCount(0) ..
C++ / 포인터
// 포인터 변수 앞의 자료형은 특정 변수의 주소에서 얻은 값을 해석하는 단위이다. // 다음의 경우는 short(2byte) 타입의 변수를 int 즉, 4바이트의 단위로 값을 해석하겠다는 의미이다. short s = 100; int* ptr = (int*)&s; // 배열이란 메모리가 연속적으로 배치되어있는 자료구조이다. // 포인터 배열의 경우 포인터를 1증가시키면 실질적으로는 포인터 변수의 자료형의 크기에 따라 주소값이 증가한다. // 즉 char형일 경우에는 1byte, short 형일 경우에는 2byte, int 형일 경우에는 4byte 씩 증가한다. int arr = {1, 2, 3, 4, 5}; int* ptr = arr;// 배열의 이름은 해당 배열의 시작 주소를 나타냄(arr = arr[..