본문 바로가기
패스트캠퍼스 챌린지(C++ 올인원)

패스트캠퍼스 챌린지 14일차

by 승욱은 2021. 11. 14.

오늘 드디어 스플레이 트리를 파이썬으로 구현해봤다. 내용은 상당히 어려웠다만.. 그래도 이해하고나서부터는 구현이 비교적 술술 되었다. 균형 이진트리를 하나 알게 된 것만으로도 상당히 많은 문제를 해결할 수 있을 것이다. 당장 수열과 쿼리 6을 해결해보고 싶은 마음이다. (구현은 다 완료되었는데.. 시간 초과가 문제다 ㅠ)

 

그렇게 스플레이 트리를 구현하느라 c++을 뒷전으로 둔 내 인생... 대구에서 서울로 올라가는 기차에서 뒤늦게 강의를 켰다. 오늘 배울 내용은 c++에서 어떻게 함수를 작성하고, 또 어떤 규칙이 있는지이다. 일단 기본적으로는 내가 아는 것과 크게 다르지는 않은 것 같지만, 변수를 넘겨주는 부분부터는 세세하게 약간씩 다르다. 변수를 넘겨주느냐 메모리 상의 주소를 넘겨주느냐의 차이 같다.

 

1. 우선 재귀 함수 작성은 비교적 크게 어려움이 없다. 일단 삼항 연산자가 파이썬보다 훨씬 간단하고, 코드 길이가 짧기 때문에 팩토리얼이나, 피보나치 함수 구현이 쉬웠다.

 

#include <iostream>

int fib(int n){
	return (!n || n==1)? 1:fib(n-1)+fib(n-2);
}

int fac(int n){
	return !n? 1:n*fac(n-1);
}

이런 식으로 보다 짧게 작성할 수 있었다.

 

2. 구조체를 이용해 트리를 구현해봤다. 앞으로 c++을 이용해 트리를 구현할 일이 많을 것이기 때문에 재미있게 들었다. 

 

#include <iostream>

using namespace std;

void order(Node *n)
{
    if (!n)
        return;
    order(n->left);
    order(n->right);
    cout << (n->value) << " ";
}

int main()
{
    Node node0{0};
    Node node1{1};
    Node node2{2};
    Node node3{3};
    Node node4{4};
    Node node5{5};
    Node node6{6};
    Node node7{7};
    Node node8{8};
    Node node9{9};
    node0.left = &node1;
    node1.left = &node2;
    node1.right = &node3;
    node3.right = &node4;
    node0.right = &node5;
    node5.left = &node6;
    node6.right = &node7;
    node5.right = &node8;
    node8.left = &node9;
    order(&node0);
} // namespace std;

이런 식으로 트리도 구현할 수 있다는 것을 알게 되었다. c++로 스플레이 트리도 구현해봐야겠다.

 

3. 변수를 넘겨주는 방식이 (1) 값 (2) 메모리 주소 (3) 포인터 세 가지가 있는 듯하다. 이걸 일일히 지정해줘야한다는 게 번거롭게 느껴지기도 하지만, 어떤 면에서는 파이썬에서 copy로 넘겨줬던 것을 생략해서 할 수 있기도 해서 좋은 듯 하다.

 

내일은 더 많은 강의를 들을 수 있기를..! 화이팅이다..!

재귀함수를 배우고 있는 모습

 

 

본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.

패스트캠퍼스 : https://bit.ly/3FVdhDa

 

수강료 100% 환급 챌린지 | 패스트캠퍼스

딱 5일간 진행되는 환급챌린지로 수강료 100% 환급받으세요! 더 늦기전에 자기계발 막차 탑승!

fastcampus.co.kr

 

#패스트캠퍼스 #패캠챌린지 #직장인인강 #직장인자기계발 #패스트캠퍼스후기 #C++실력완성올인원패키지

댓글