티스토리 뷰



겨울이 성큼 성큼 다가오면서 지난 계절을 치열하게 살았던 나무들도 나뭇잎을 떨구기에 바쁩니다. 바람이라도 불면 이 낙엽 저 낙엽이 뒤엉켜 "조금 큰 먼지인가 보다"며 지나쳐 버릴 낙엽이 밤새 조용히 내려 나무마다 그 누구도 창조하기 어려운 아름다움 패턴을 만들어 내고 있습니다. 아저씨의 대나무 빗자루가 닿기 전에 셔터를 부지런히 눌러 보았습니다.


산딸나무 낙엽. 잎맥이 선명한 산딸나무 낙엽은 잎맥과 함께 반들반들함과 다양한 색 자체로 아름답습니다.


자엽자두 나무의 낙엽. 나뭇잎과 열매 모두 자줏빛을 뽐내던 자엽자두의 낙엽은 낙엽 마저도 그 빛깔을 유지합니다.


아직 나무에 붙어있는 나뭇잎이 많지만 단풍의 대명사 단풍나무 낙엽입니다. 무수히 쏟아져 있을때와는 다른 느낌입니다.


목련의 낙엽. 꽃도 아름답고 열매도 특이하지만 낙엽에서는 가을 풍취가 가득합니다.

중국 단풍나무의 낙엽. 큰 나무에서 떨군 중국 단풍나무 낙엽을 밟는 느낌이란! 만추(晩秋)의 감성을 훅 부어줍니다.


자엽 자두나무와 단풍나무의 섞인 낙엽도 참 이쁩니다. 나란히 선 두나무가 떨꾼 낙엽의 섞임은 한해 동안 해를 더 받으려 경쟁했던 두 나무가 계절을 보내며 나누는 화해와도 같아 보입니다.


봄에는 하얀 벚꽃을 떨구던 장소에 이제는 낙엽을 떨군 벚나무 낙엽입니다. 가만히 내린 낙엽, 뒤집힌 낙엽의 색이 바닥 패턴과 어울려 이것만으로도 그림입니다.


댓글
  • 프로필사진 안녕하세요 굉장히 무례한거 아는데 그래도 드릴말씀이 있어서 왔습니다.
    일전에 올려주셨던 TCC 컴파일러 저도 받아서 노트패드 안에 콘솔창 띄우고 잘 쓰고 있었는데,
    자료구조에 대해 공부를 하다가 최소히프, 최대히프 쪽을 (우선순위 큐) 공부하게 되었습니다.
    그래서 코드를 짜고 컴파일을 했는데 책을 보고 그대로 해도 아무리 해도 오류가 뜨고 컴파일이 되지 않아
    이상했던 찰나에 친구가 다른 GCC를 설치해보라 해서 다른 GCC로 설치를 하니 코드가 실행이 되는 현상을 목격했습니다.
    뭐 괴상한 코드를 넣은 것도 아니고 그저 포인터 변수, 변수, 전역변수, 배열 등등으로 기본 자료형들로 만들었는데 에러가 뜨더군요..
    굉장히 무례한 거 알지만 혹시라도 다른분들이 이 블로그를 보고 TCC 사용하다 에러가 날 수 있으니 조심하라는 글을 좀 덧붙여주셨으면
    좋겠습니다. 님도 혹시 코딩할 때 에러가 발생할 수 있다는거 알아두시면 굉장히 좋을거 같아요!
    낙엽 사진이 참 이쁘네요. 주제에 맞지 않는 댓글 정말 죄송합니다. 어제 tcc를 또 쳐야되는군요 ㅋㅋ 라고 덧글남긴 사람입니다.
    너무 좋은 블로그인거 같아요 여기. 자주 놀러오겠습니다~!
    아 참고로 오류가 난 부분은 최대히프 삭제, 최소히프 삭제 부분입니다. 삽입은 에러가 나지 않는데 삭제부분에서 에러가 나더라구요!
    2016.11.14 23:25
  • 프로필사진 야라바 피드백 고맙습니다.
    컴파일이 안된다는 현상에 대해서 해당 코드 부분과 오류 메시지를 올려주셨으면 함께 연구해 볼수 있겠다는 생각이 드네요.
    한가지 주의하실 점은 TinyCC(tcc)는 C컴파일러이지 C++컴파일러는 아니라는 것입니다. C++코드로 테스트하신것은 아니시겠지요?
    2016.11.15 09:43 신고
  • 프로필사진 안녕하세요 저는 C++은 배우지않았습니다. C와 자바밖에 할 줄 모르는 사람이에요 ㅋㅋ
    원래는 비주얼 스튜디오를 썼는데 물론 지금도 학교에선 그걸 쓰고 있죠.
    근데 아시다시피.. 그냥 코드만 치고 컴파일만 하면 되는걸 굳이 프로젝트 만들고 솔루션 탐색기에서 소스코드 생성하고
    너무 번거로운거 같아 GCC를 찾던 도중에 여기서 TCC를 보고 와.. 이런게 있구나.. 짱이다. 하면서 쓰고 있었습니다.
    element delete_min_heap(HeapType *h) {
    int parent, child;
    element item, temp;
    item = h->heap[1];
    temp = h->heap[(h->heap_size)--];
    parent = 1; child = 2;
    while(child <= h->heap_size) { //현재 노드의 자식 중 큰 자식 노드를 찾는다
    if((child < h->heap_size) && (h->heap[child].key > h->heap[child+1].key)) child++;
    if(temp.key <= h->heap[child].key) break; //한 단계 아래 이동
    h->heap[parent] = h->heap[child];
    parent = child;
    child = child * 2;
    }
    h->heap[parent] = temp;
    return item;
    }
    이게 문제의 코드부분인데, 책에 나온것과 인터넷을 여기저기 뒤져봐서 찾은결과 맞는 알고리즘이란걸 알 수 있었습니다.
    근데 메인함수에서 element e10 = delete_min_heap(&h) 이런식으로 꺼내보려 하니 에러가 나더라구요.
    그냥 책에 있는 소스코드를 그대로 배꼈는데도 말이죠. 그래서 진짜 이틀동안 계속 오류를 찾아보려 고민했지만
    아무리 봐도 오류가 없는겁니다. 그래서 친구한테 소스코드를 보내줬는데 난 잘되는데? 라는 겁니다.
    읭..!? 그래서 당장 GCC를 하나 더 깔았고 그 GCC에서 돌려보니 아주 멀쩡히 잘 돌아가는.. 현상을 발견했던 겁니다.
    GCC도 TCC 처럼 노트패드에 콘솔창 띄우고 하면 참 좋으련만.. 아쉽네요.
    TCC도 오류만 나지 않는다면 정말 다른 어떤거보다 간편한 컴파일러인데 참 아쉽네요.. GCC는 컴파일 할때 컴파일 하는 코드의 exe생성 파일을
    따로 이름을 정해줘야 하고.. 번거로운게 있는데 TCC는 알아서 해주니까요. 간편하게 돌아가는 코드는 TCC로 써도 될 거 같습니다.
    글 읽어주셔서 감사합니다.
    2016.11.17 11:37
  • 프로필사진 야라바 낙엽글에 이런 댓글을 다는것이 어울리지는 않지만 질문을 하셨으니.... 올리신 코드는 C코드가 맞군요 그렇지만 올리신 코드를 기반으로 확인해보니 문제가 없더군요. 포인터 인수 전달 부분을 확인해 보셔야 겠군요. 아래는 정상적으로 컴파일한 코드입니다.

    #define MAX_ELEMENT 100

    typedef struct TreeNode {
    int weight;
    struct TreeNode *left_child;
    struct TreeNode *right_child;
    } TreeNode;

    typedef struct {
    TreeNode *ptree;
    int key;
    } element;

    typedef struct {
    element heap[MAX_ELEMENT];
    int heap_size;
    } HeapType;

    element delete_min_heap(HeapType *h) {
    int parent, child;

    element item, temp;
    item = h->heap[1];
    temp = h->heap[(h->heap_size)--];
    parent = 1; child = 2;
    while(child <= h->heap_size) { //현재 노드의 자식 중 큰 자식 노드를 찾는다
    if((child < h->heap_size) && (h->heap[child].key > h->heap[child+1].key)) child++;
    if(temp.key <= h->heap[child].key) break; //한 단계 아래 이동
    h->heap[parent] = h->heap[child];
    parent = child;
    child = child * 2;
    }
    h->heap[parent] = temp;
    return item;
    }

    main()
    {
    HeapType heap;
    element e10 = delete_min_heap(&heap) ;
    }
    2016.11.17 17:34 신고
  • 프로필사진 안녕하세요 저는 배열을 이용한 insert_min_heap과 delete_min_heap을 구현했었는데요.
    제가 혹시 코드를 잘못쳤나 싶어서 책에 동봉된 CD안에 들어있는 소스코드를 그대로 돌려보기도 했었고
    다른 컴파일러에서도 돌려본 결과 TCC에서만 사용이 중지되었습니다. 라는 오류가 뜨는걸로 판명이 되었네요.
    연결리스트로 해보면 어떻게 될지는 모르겠지만.. 님이 주신 코드로 한 번 해보겠습니다.
    다시 한 번 좋은 낙엽사진에 이런 글을 단 저는 사과의 말씀을 드립니다.
    첫번째 사진 두번째사진 정말 마음에 듭니다. 뭔가 마음이 차분해진다고 해야하나.. 가끔 구경와도 되겠죠..?
    2016.11.20 13:46
댓글쓰기 폼