공부/코드트리

[코드트리 챌린지] 5주차, 나는 천재다. 나는 능히 할 수 있다.

상연 2023. 10. 9. 20:19

목차

     

    RE: 진단평가로부터 시작하는 코드트리 생활

    한 달 동안 여전히 DP에서 고배를 마시고 점수의 제자리 걸음을 걷고 있는 화자이다.

    이 쯤 되면 이악물고 바로 학습을 안하는 것에 스스로 감탄을 하고 있는 상황이다.

    그래도 스스로 자위하자면 솔직히 마지막 10초만 더 있었으면 DP 풀었는데 틀린부분 찾자마자 타임아웃했다.

    아쉽지만 어쩔 수 없다! 사소해

     


    NOVICE HIGH 완료(진)

    지난주차즈음 시작했다던 'NOVICE HIGH' 파트를 대부분 완료했다.

    이론적인 부분이라서 중요하긴 한데 솔직히 너무 지루했던 부분이었다.

    그래도 그래프는 전에 배웠지만 까먹은게 워낙에 많았어서 조금 상세히 봤다.

    다익스트라, 플루이드 워셜, 크루스칼...

    작년 학부과정 3학년... 알고리즘 수업때 배우고 했었는데 왜 이렇게들 새로운지 이 부분은 꾸준히 좀 반복해야 할 필요성을 느꼈다.

    코드트리 - 교수님의 자존심을 걸고... 

     

    코드트리 | 코딩테스트 준비를 위한 알고리즘 정석

    국가대표가 만든 코딩 공부의 가이드북 코딩 왕초보부터 꿈의 직장 코테 합격까지, 국가대표가 엄선한 커리큘럼으로 준비해보세요.

    www.codetree.ai

    개인적으로 공부하면서 제목이 웃겼던 문제였다.

    학부생이 감히 척척박사 교수님들의 자존심을 걸다니.

    가히 건방짐이 극치에 다른 행태인 것이었다...

    소년개발자 김전일, 교수님의 명예를 걸고 이 문제를 풀었다.


    INTERMEDIATE LOW [알고리즘 입문] 시작

    이번주차에는 드디어  실전? 형 문제에 돌입했다.

    난이도는 개인적으로 봤을때 백준 기준으로 실버 초반~ 골드 초반 사이에 포진되어있는 것 같았다.

    현재는 시뮬레이션 파트를 하고 있는데, 소위 빡구현이라고 해야하나 그런 문제들 투성이라 한 문제 푸는데 생각보다 많은 시간이 소요 되고 있는 실정이다.

    이러한 이슈로 인해 생각보다 진도가 꽤 더디게 나아가고 있다.

    그래도 이번 달 내에는 다 끝내고 넘어갈 것 같다.

    가장 Well-Known 한 유형들이 익숙하고 보기싫다

    그래도 이전 단계에서 계속 공부했던게 참 도움이 되고 있다고 느끼면서 문제를 풀고 있다.

    시뮬레이션 유형 - 최단 Run Length 인코딩 

     

    코드트리 | 코딩테스트 준비를 위한 알고리즘 정석

    국가대표가 만든 코딩 공부의 가이드북 코딩 왕초보부터 꿈의 직장 코테 합격까지, 국가대표가 엄선한 커리큘럼으로 준비해보세요.

    www.codetree.ai

    이러한 유형의 문제들이 계속해서 나오고, 뭐 배열에 폭탄을 터트려서 0으로 만들고 그런것도 있다.

    꼭 폭탄을 터트리고 바람을 불어서 위치를 바꾸고 해야할까...

    다들 서로서로 건드리지 않고 평화롭게 살았으면 하는 바람이다. PIECE...

    #include <iostream>
    using namespace std;
    
    int main() {
    
        string str;
        cin >> str;
    
        int answer = 21;
        int strlen = str.length();
        for(int push=0; push<strlen; push++)
        {
            int l = 0;
            int cnt = 1;
            for(int i=strlen+1; i<strlen*2; i++)
            {
                if(str[(i+push)%strlen] == str[(i-1+push)%strlen])
                {
                    cnt += 1;
                }
                else
                {
                    if(cnt < 10) l+=2;
                    else l+=3;
    
                    cnt = 1;
                }
            }
            if(cnt < 10) l+=2;
            else l+=3;
    
            answer= l < answer ? l : answer;
    
        }
    
        cout << answer;
        // 여기에 코드를 작성해주세요.
        return 0;
    }

    위 문제의 경우 내가 풀었던 코드이다.

    해설에서 설명했던 그런 방법보다는 조금 다르게 풀었다.

    근데 시간복잡도는 아마 같을것이다.


    코드트리 시작한지 약 한 달.

    진짜 딱 4주 된 것 같다.

    그래도 매일 꾸준히 최소 한 문제는 풀면서 루틴을 지키고 있었는데

    어제는 개인적인 약속이 생겨서 놓쳤다. 하지만 이런 사소한 것에 일희일비하고 놓으면 안되기 때문에...

    이제 이 포스팅을 마무리하고 오늘의 할당량을 채워야겠다.

    그리고 나름 나와 같은 언어로 문제를 푸시는 분이 있는데, 제출기록을 보면 그분이 늘 나보다 며칠 먼저 문제를 풀고 가신게 보인다.

    요즘은 혼자 승부욕을 내서 그 분을 따라잡는 소소한 재미로도 코드트리를 하고 있다. 동질감도 느껴지고...

    어제 하루 안 했으니 격차가 좀 더 벌어졌겠지? 앞으로 더 열심히 해야겠다.