Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
92 changes: 92 additions & 0 deletions submission/day2/exercise_09.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
#include <iostream>
#include <algorithm>
#include <vector>

using namespace std;

template<typename T>
class MyVector {
public:
MyVector(const int& temp = 3) {
data = new T[temp]; //data=new int[3]
m_size = 0;
m_capacity = temp;
}
~MyVector() {
if (data != NULL) {
delete[] data;
}
}

void push_back(const T& n) {

if (m_capacity <= m_size) {
m_capacity *= 2; //용량 늘리고

T* tmp = new T[m_capacity]; //용량만큼 새 메모리 할당
for (int i = 0; i < m_size; i++) {
tmp[i] = data[i];
}
delete[] data; //? 기존 data가 가리키는 부가메모리 해제후
data = tmp; // tmp가 가리키는 동적 배열 가리키게
}
//용량 넉넉하면 추가만
data[m_size] = n; //맨 뒤에 데이터 추가
m_size++;
}

void pop_back(/* ... */) {
/* ... */
m_size = m_size > 0 ? m_size - 1 : 0;
}

/* return-type */
T& operator[](size_t i) { /* ... */
return data[i];
}

size_t size() const {
/* ... */
return m_size;
}
T* begin() {
return data; //시작주소
}
T* end() {
return data + m_size; // 포인터 주소연산 ,끝 주소(empty)
}
private:
T* data;
size_t m_size;
int m_capacity;
// Define other member variables if necessary
};

// Use case
int main() {

{
MyVector<int> v;
cout <<"초기 사이즈: "<< v.size() << '\n';
v.push_back(1); // v.size() == 1
v.push_back(2); // v.size() == 2
cout<<"1,2 push후 사이즈: "<<v.size() << '\n';
v.push_back(3); // v.size() == 3
cout << "3 push " << '\n';
v.pop_back();
cout << "pop " << '\n';
v.push_back(4); // v.size() == 4

cout << "4 push후 사이즈 :"<<v.size() << '\n';
v.push_back(5); // v.size() == 5
cout << "5 push " << '\n';
cout << "전체 출력: ";
for (auto i : v) {
cout << i << ' ';
}
} // v 소멸



return 0;
}
154 changes: 154 additions & 0 deletions submission/day2/exercise_10.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,154 @@
#include <iostream>
#include <algorithm>
#include <vector>

using namespace std;

template<typename T>
class MyVector {
public:
MyVector(const int& temp = 3) {
data = new T[temp]; //data=new int[3]
m_size = 0;
m_capacity = temp;
}
~MyVector() {
if (data != nullptr) {
delete[] data;
}
}
//
MyVector(const MyVector& r) //복사 생성자
{
data = new T[r.m_capacity];
m_size=r.m_size;
m_capacity = r.m_capacity;
copy(r.data, r.data + m_size, data); //r.data -> data로 복사
}

MyVector(MyVector&&r) noexcept //이동 생성자
{ /* ... */
m_size = exchange(r.m_size,0);
m_capacity = exchange(r.m_capacity,0);
data = r.data;

r.data = nullptr; //자신이 가리키고 있던 메모리 해제하지 못하게

}
//복사 대입 연산자
MyVector& operator=(const MyVector& r) { /* ... */
if (this !=&r) { // Myvector v1(v1); 자기 자신 대입시 실행x
if (m_capacity < r.m_capacity) {
delete[] data;

m_size = r.m_size;
m_capacity = r.m_capacity;
data= new T[m_capacity];

}
for (int i = 0; i < r.m_size; i++) {
data[i] = r[i];
}
}

return *this;
}
//이동 대입 연산자
MyVector& operator=(MyVector&& r) noexcept{ /* ... */
if (this != &r) {

delete[] data;
m_size = exchange(r.m_size, 0);
m_capacity = exchange(r.m_capacity, 0);
data = r.data;

r.data = nullptr;
}
return *this;
}
void push_back(const T& n) {

if (m_capacity <= m_size) {
m_capacity *= 2; //용량 늘리고

T* tmp = new T[m_capacity]; //용량만큼 새 메모리 할당
for (int i = 0; i < m_size; i++) {
tmp[i] = data[i];
}
delete[] data; //? 기존 data가 가리키는 부가메모리 해제후
data = tmp; // tmp가 가리키는 동적 배열 가리키게
}
//용량 넉넉하면 추가만
data[m_size] = n; //맨 뒤에 데이터 추가
m_size++;
}

void pop_back(/* ... */) {
/* ... */
m_size = m_size > 0 ? m_size - 1 : 0;
}

/* return-type */
T& operator[](size_t i) { /* ... */
return data[i];
}
//추가.. const 참조 객체 접근시
const T& operator[](size_t i) const {
return data[i];
}

size_t size() const {
/* ... */
return m_size;
}
T* begin() {
return data; //시작주소
}
T* end() {
return data + m_size; // 포인터 주소연산 ,끝 주소(empty)
}
private:
T* data;
size_t m_size;
int m_capacity;
// Define other member variables if necessary
};

// Use case
int main() {

{
MyVector<int> v;
cout <<"초기 사이즈: "<< v.size() << '\n';
v.push_back(1); // v.size() == 1
v.push_back(2); // v.size() == 2
cout<<"1,2 push후 사이즈: "<<v.size() << '\n';
v.push_back(3); // v.size() == 3
cout << "3 push " << '\n';
v.pop_back();
cout << "pop " << '\n';
v.push_back(4); // v.size() == 4

cout << "4 push후 사이즈 :"<<v.size() << '\n';
v.push_back(5); // v.size() == 5
cout << "5 push " << '\n';

cout << "전체 출력: ";
for (auto i : v) {
cout << i << ' ';
}
cout << '\n';

MyVector<int> v2 = std::move(v); //이동생성자 호출
for (auto i : v2) {
cout << i << ' ';
}
cout<<'\n';
const auto& vref = v2;
cout<<vref[0];
} // v 소멸



return 0;
}
51 changes: 51 additions & 0 deletions submission/exercise-<01>/02.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;

vector<int> v;

int main() {
int i = 10;

while (i--) {
int k;
cin >> k;
v.push_back(k);
}
int a;
cin >> a;

//vector<int>::iterator it;
if (find(v.begin(), v.end(), a) != v.end()) {
int idx = find(v.begin(), v.end(), a) - v.begin(); //인덱스
cout << idx;
}
else {

int idx = -1;
vector<int>::iterator it=
find_if(v.begin(), v.end(),check(a) );

if (it == v.end()) {
cout << idx;
}
else {
for (int i = 0; i < v.size(); i++) {
if (v[i] == *it)
{
idx = i;
break;
}
}
cout << idx;
}

}





return 0;
}
44 changes: 44 additions & 0 deletions submission/exercise-<01>/05.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
#include <iostream>
#include <algorithm>
#include <vector>
#include <unordered_map> //해시 map 사용
using namespace std;

int main() {

int n;
cin >> n;

unordered_map<int, int> m1;
while (n--) {
int k;
cin >> k;
auto it = m1.find(k);
if (it != m1.end()) {
it->second += 1;
}
else { //못찾음
m1.emplace(k, 1);
}
}
int m;
cin >> m;
vector<int> B;
while (m--) {
int k;
cin >> k;
B.push_back(k);
}

for (const auto& x: B) {
auto it = m1.find(x);
if (it != m1.end()) {
cout << it->second << " ";
}
else {
cout << 0<< " ";
}
}

return 0;
}
23 changes: 23 additions & 0 deletions submission/exercise-<01>/06.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
#include <iostream>
#include <algorithm>
#include <vector>
#include <unordered_map> //해시 map 사용
#include <numeric>
using namespace std;

int main() {
int a, b, N;
cin >> a >> b >> N;

vector<int> A(N);
vector<int> B(N);


iota(A.begin(), A.end(), a);
iota(B.begin(), B.end(), b);

auto res=inner_product(A.begin(), A.end(), B.begin(), 0);

cout << res;
return 0;
}
Loading