공부/코드트리

[코드트리 챌린지] 1주차 같은 2주차, 완전 탐색은 이제 지겨워

상연 2023. 9. 18. 17:52

목차

    코드트리와 함께 하는 재활 훈련 시작

     

    코드트리를 알게 된 것은 조금 오래 된 이야기였다.

    7~8월 즈음 접하고 나서는 유형별로 학습해서 기초를 쌓기에 굉장히 좋다고 생각했었기 때문에 전체 코스 1년치를 분명 3개월 무이자 할부로 결제했었는데

    할부 마지막 달인 9월이 되어서야 다시 코드트리를 키게 되었다.

    세상에는 공부보다 재밌는게 너무 많았다.

    아무튼, 개강과 동시에 시작한 알고리즘 재활 훈련.

    더 이상 미룰 수 없다 나의 취준, 코드트리 재활.

     


    진단평가, 그리고 코드트리 블로그 챌린지 시작 

    그렇게 다시 시작을 하려 하니 블로그 챌린지가 있더라.

    가뜩이나 의지박약인데 이런거 하면 좀 도움이 되지않을까 고민고민하다가 이 마저도 막차로 탑승했다 진짜.

    그래서 1주차가 지나고나서 나는 시작하게 되었다.

     

    그리고 오늘이 2주차 작성 마지막 날인데, 매 주 진단평가를 봐야 한다고 하더라.

    내 실력을 매주 측정함으로서 객관화를 할 수 있다는 것은 큰 장점 같다.

    한 시간 정도 열심히 푼 것 같다. 마지막에 접한 문제가 DP로 접근하는건 알고 있었는데 괜히 재귀형식으로 접근했다가 시간초과 나서 털렸다. 

    코드트리 코딩테스트 모의진단

    697점을 받았다.

    대충 두 달 전 쯔음...? 아마 저때가 결제했을때 같은데 그 이후로 공부를 제대로 안 한거 치고는 다행이라고 본다.

     

     

    그리고 진단평가가 끝나고 나면 마지막에 실패한 문제의 유형과 공부법에 대해 아주 상세히 알려준다.

    얼마나 많은 문제를 푸느냐 보다는 얼마나 질 좋게, 내가 모르는 부분을 잘 채웠냐가 중요하다고 생각하는 사람으로서 이러한 부분이 내가 코드트리로 공부를 하게 된 가장 큰 부분이었다.

    저작권 빔- 이 무서워서 일부만 캡쳐했지만 실제로는 기본 개념에 대한 포스팅부터 시작해서 기본 유형, 응용 문제까지 연습할 수 있게 해 준다.

    실제로 학습도 이러한 식으로 진행되기 때문에 유형별로 대응할 수 있는 기초 실력을 키우기에는 이만한 게 없다.

    나 같은 경우에는 지금 하루 240xp를 할당량(일일 3시간) 으로 놓고 공부를 하고 있는데

    이를 기준으로 꾸준히 한다면 위 사진보다는 더 빠르게 저 기준에 충족하는 실력을 갖게 될 수 있지 않나 싶다.


    2주차, 완전 탐색의 주간이었다.

    나 같은 경우에는 현재 NOVICE MID : 프로그래밍 연습 단계부터 차근차근 학습을 해 나가고 있다.

    6, 7, 8장에 완전탐색 1, 2, 3으로 이루어져 이번 주간은 완전히 완전탐색에만 올인했었다.

    오늘이 완전탐색3의 마지막 단계쯤 되어가니 아마 오늘 내일 중으로 완전탐색이 끝나고 다음주간 즈음에는

    NOVICE MID를 졸업 할 수 있을 듯 하다.

     


    완전탐색에 대한 소회?

    완전탐색은 어떻게 보면 컴퓨터의 능력을 십분 활용하면서도 어딘가 찜찜한 그런 해결 방법같다.

    탐색 가능한 모든 경우의 수를 찾아서 탐색해서 답을 얻는 그런 것인데...

    너가 뭘 좋아할지 몰라서 다 준비해봤어...(수줍)

    약간 이런 느낌...?

    그러다 보니, 알고리즘을 짜는 입장에서는 계속 한편으로 아 너무 비효율적이지 않나... 좀 더 효율.. 효율 좋은거... 없나?

    근데 없는 문제라 되게 가슴 한 켠으로 괴로워하며 문제를 푼다.

    2주차 동안 풀면서 이건 대체 어떻게 하는 거지? 하는 문제들을 저장 해 놓은 것이다.

    근데 해 보면 알겠지만 뭔가 문제 해결의 접근이 까다로운듯 하면서 솔직히 풀이가 더러운게 있다.

    물론 내가 접근방법을 생각 못 한게 크지만...

    아무튼 그렇게 해서 이번 2주차에는 dx, dy 테크닉부터 시작해서 완전탐색의 끄트머리에 왔다.

    개인적으로 dx, dy 테크닉이 굉장히 유용하다고 생각한다.

    이번 진단평가를 볼 때에도 아주 유용하게 사용했다.

     


    dx, dy 테크닉 정리

    int dx[4] = {1, 0, -1, 0}, dy[4] = {0, -1, 0, 1};
    int nx, ny;
    
    nx = x + dx[dir_num], ny = y + dy[dir_num];

    뭐 이런 느낌인데...

    가끔 탐색을 진행할때 방향을 정해서 탐색한다던지 뭐 그런게 필요하다.

    그런데 이렇게 dx, dy 배열을 정해놓으면 반복문으로 순회하면서 각 방향별로 탐색이 가능해서 아주 편리하다.

    위의 코드의 경우에는

    index 0~3 까지

    우->상->좌->하 이렇게 반 시계방향으로 순회하는 dy, dx라고 볼 수 있다.


    개인적으로는 까다로웠던 문제를 올리고 풀이를 올리는 식으로 주차를 마무리 해 보고 싶은데, 코드트리가 유료결제 사이트이고 저작권이 있다보니 그러지 못하는 것이 조금 아쉽다.

    문제를 올리지 않고 풀었던 코드만 올리는 건 되려나...? 잘 모르겠다.

    어쨌든 코드트리만큼 가장 알고리즘 공부를 하면서 재미있고 동기부여가 되는 것은 없는것 같다.

    막혔을때의 해설을 보는거라던지 토론방에서의 질답도 용이하고... 꾸준히 해보자!