.. Cover Letter

ㅇ 공부#언어/(C++) 자료구조 및 STL 10

(C++) 초급 2장. 연산자 오버로딩(연산자 중복) 복습하기(1/2)

주의 : 이 글은 C++의 기초문법에 대해 상세하게 다루지 않습니다. ※ 뇌를 자극하는 C++ STL 의 책을 참고하여 개인적으로 정리한 글입니다. 이 글의 목적은 해당 책의 내용을 인용하여 더 쉽게 이해하고자 정리하고, 더 쉬운 예제를 통해 이해하는 것을 목표로 하고 있습니다. 깊게 공부하고 싶다면 책을 구매하는 것을 추천드립니다. 책의 저작권 등등 각종 권한은 출판사와 지은이/옮긴이에 있습니다. - 출판사: (한빛 미디어) - 지음: 공동환 ※ 이 블로그는 포토폴리오 목적으로 별도의 수익을 창출하지 않습니다. 뇌를 자극하는 C++ STL - YES24 뇌를 자극하는 C++ STL - YES24 코드 중심으로 설명했다. 코드를 실습하면서 한 단계씩 실력을 쌓을 수 있게 했다. 단계별로 난이도를 조금씩 ..

(C++) 초급 1장. 연산자 오버로딩(연산자 중복) 복습하기

주의 : 이 글은 C++의 기초문법에 대해 상세하게 다루지 않습니다. ※ 뇌를 자극하는 C++ STL 의 책을 참고하여 개인적으로 정리한 글입니다. 이 글의 목적은 해당 책의 내용을 인용하여 더 쉽게 이해하고자 정리하고, 더 쉬운 예제를 통해 이해하는 것을 목표로 하고 있습니다. 깊게 공부하고 싶다면 책을 구매하는 것을 추천드립니다. 책의 저작권 등등 각종 권한은 출판사와 지은이/옮긴이에 있습니다. - 출판사: (한빛 미디어) - 지음: 공동환 ※ 이 블로그는 포토폴리오 목적으로 별도의 수익을 창출하지 않습니다. 뇌를 자극하는 C++ STL - YES24 뇌를 자극하는 C++ STL - YES24 코드 중심으로 설명했다. 코드를 실습하면서 한 단계씩 실력을 쌓을 수 있게 했다. 단계별로 난이도를 조금씩 ..

8. 순차리스트를 통해 스택 구현하기

스택을 구현해주세요. 1. 순차자료형으로 구현을 해주세요. 스택에 원소를 삽입하는 push 함수를 구현 해주시구요. 스택에 원소를 제거하는 pop 함수를 구현해주세요. top에 있는 원소의 값을 반환하거나 스택의 값을 모두 출력해주세요. 순차자료형의 크기는 100으로 해주세요. 문제풀이 스택이란? 통안에 자료를 넣는 것이라 생각하면된다. 자료를 차곡차곡 쌓아가는 과정이다. 그래서 자료를 쌓는 과정을 push라고 하고, 자료를 삭제하는 과정을 pop 이라고 합니다. 맨 위의 자료는 보이기 때문에 조회를 할 수 있습니다. (제일 처음에 넣었던 자료를 확인하고 싶다면 pop을 통해 모두 빼내어야합니다.) 순차자료형으로 구현한다면 정말 쉽다. 결국 배열 문제이기 때문 구현을 하던 중 들었던 생각이다. 스텍이라는..

7. 이중 연결 리스트를 이용하여 삽입, 삭제, 탐색, 조회 구현하기

6. 단순 연결 리스트 삽입, 탐색, 삭제, 역순 구현 (tistory.com) 6. 단순 연결 리스트 삽입, 탐색, 삭제, 역순 구현 단순 연결 리스트 순차 리스트는 물리적인 순서와 논리적인 순서가 일치하지만, 연결 리스트의 경우 논리적인 순서는 일치하나 물리적인 순서가 같지 않는 것을 말한다. ( 값 / 주소) 이루어진 kimbrain.tistory.com (이전의 글에서 연결리스트를 상세하게 설명했기 때문에 이 글은 설명의 비중을 조금 낮춰서 진행하겠습니다) 이중 연결 리스트란? 이전 시간에 다룬 연결리스트의 경우 L(시작점) -> (값 / 링크) -> (값 / NULL) 위와 같은 형식으로 자료를 저장했습니다. 문제를 풀면서 연결리스트를 역순으로 지정하는 경우 혹은 바로 뒤에 있는 정보를 읽어오고..

6. 단순 연결 리스트 삽입, 탐색, 삭제, 역순 구현

단순 연결 리스트 순차 리스트는 물리적인 순서와 논리적인 순서가 일치하지만, 연결 리스트의 경우 논리적인 순서는 일치하나 물리적인 순서가 같지 않는 것을 말한다. ( 값 / 주소) 이루어진 하나의 데이터를 노드라고 부른다. (값 / 100번지 주소) -> ( 100번지 값 / 200번지 주소) -> (200번지 값 / NULL) 처럼 자료를 저장한다. 문제 단순연결리스트에서 다음 함수들을 구현하시오. 1. 단순 연결 리스트에서 삽입하는 연산을 수행하는 함수 2. 단순 연결 리스트에서 노드를 탐색하는 함수 3. 단순 연결 리스트에서 삭제 연산을 수행하는 함수 4. 모든 노드를 역순으로 저장하는 함수 사용자로 부터 값을 입력받는 것으로 진행하세요. 0. 구현하기 전 연결 리스트 구현하기. 하나의 노드는 (값..

5. 희소행렬의 전치 계산하기

문제 (행렬을 표현하고 싶은데, 방법이 없어서 표로 표현합니다.) 0 0 2 0 0 0 12 0 0 0 0 7 0 0 23 0 0 0 0 0 0 0 0 0 31 0 0 0 0 14 0 0 0 25 0 0 0 0 0 0 0 6 52 0 0 0 0 0 0 0 0 0 0 11 0 0 다음 희소행렬의 전치를 계산해라. 선형 리스트 표현을 함고하여 표현해라. 값의 대부분이 0으로 나타나는 행렬을 희소행렬이라고 하며, 행렬을 전치 시킨 후 행렬로 표현하고 싶다 행렬로 표현할때는 동적할당을 이용해라 풀이전략 1단계 : 선형 리스트를 사용하지 않고, 전치 작업을 구현하기 전치를 구현하기전 전치란 쉽게말해 행과 열을 서로 뒤바꾸는 작업을 말한다. 이는 손쉽게 구현할 수 있는데 바로 2차원 배열을 이용하는 것이다. 예시를..

4. 순차(선형)리스트를 이용하여 다항식 계산기 만들기

(해당 글은 공부를 위해 작성하는 것입니다.) 4. 다항식 계산기를 완성하세요. 다항식의 덧셈, 곱셈, ax^z 를 연산을 수행하는 계산기를 만드세요. 모두 구현하세요. 1차원 배열로 구현한 후 2차원 배열로 구현하세요. 알고리즘을 생각하지 전에 1차원배열로 다항식을 어떻게 표현할지 생각을해보자. x^4 + 2x^2 + x + 3 어떻게 저장을 해야할지 고민이다. 5개짜리 배열을 선언한 후 4 3 2 1 0 1 0 2 1 3 해당 방법으로 표현하는 방법이 가장 좋을 것이다. 그렇다면 계산기처럼 입력을 받는 상황이라 가정할 때 다항식으로 바로 입력을 받는건 조금 무리가 있다고 생각하고, 거기보다 난이도를 낮춰서 두 가지 접근 방식을 생각해보자. 1. 처음부터 최고 지수를 입력받아 동적배열을 생성하고 반복문..

3. 하노이탑

하노이탑이란 A의 원판을 하나만 이동하여 모두 C로 이동하는 것이다. 무조건 아래에 위치하는 원판은 위에 위치하는 원판보다 커야하며 작으면 안된다. 원판의 개수를 입력받고, 이를 모두 A에서 C로 옮기는 알고리즘을 작성하며 A에서 C로 옮기는 동작을 모두 출력하고 이동횟수를 출력해라. 하노이의 탑 - 나무위키 (namu.wiki) B A->C B->C 3과정을 거친 다는 것이다. 알고리즘 작성을 시작해보자. 원판이 한개인 경우를 제외하고는 A에서 B로 가는 것 하나 A에서 C로 가는 것 하나 (시작에서 끝으로 이동한다.) B에서 C로 가는 것 하나 그렇다면 하노이 함수에는 시작점과 끝을 알려주는 변수 (A, C)가 있어야할 것이다. 그리고 중간에 경우해가는 변수 (B) 그리고 원판의 개수를 알려주는 함수..

2. 재귀함수를 이용하여 펙토리얼 구현하기

2. 재귀함수를 이용하여 펙토리얼 함수를 구현하세요. 숫자를 입력받고, 이에 해당하는 결과값을 출력합니다. 알고리즘 분석 펙토리얼이란 5! = 5 * 4 * 3 * 2 * 1 = 120 즉 n! = n * (n-1) * (n-2) .... * 2 * 1 = 을 말한다. 재귀함수로 구현하기 위해 n-1의 값을 다시 함수로 돌리는 방식을 생각해보자. ADT int 펙토리얼 (int n){ if(n이 1이라면) 1을 반환해주세요.; if(n이 1보다 크다면) return n * f(n-1) } 소스코드로 구현해보자 #define _CRT_SECURE_NO_WARNINGS #include int pack(int n) { if (n == 1) { return n; } return n * pack(n - 1); }..

1. 피보나치 수열

피보나치 수열 문제 1, 1, 2, 3, 5, 8, 13, 21 ... n항과 (n+1)항을 더하는 알고리즘을 작성해보자. 숫자를 입력받으면 해당하는 항의 피보나치 수열을 출력한다. 알고리즘 분석 숫자 n이 입력되면 n항까지 피보나치 수열을 계산한다. n0 = 1 이라면 n1 = 1이다. n0 + n1 = n2 n1 + n2 = n3 n2 + n3 = n4 의 계산과정을 거친다. 우선 생각이 가는대로 알고리즘을 작성해본다. ADT 피보나치 (int n){ int 출력수1 = 1; int 출력수2 = 1; 출력하세요(출력수1); // 첫째항을 미리 출력하자 for(int i=0; i 1) { int temp; temp = output2; output2 = output1 + output2; output1 =..