개발시작했더니 서현이가 개털리는 이야기

[코드트리] 백트래킹 알고리즘 약점 극복 학습 후기 본문

스터디/코테 스터디(java)

[코드트리] 백트래킹 알고리즘 약점 극복 학습 후기

huynhuyn22 2026. 6. 1. 20:36

저번 코드 트리 학습 때 수행한 갭체크에서 아래와 같은 결과가 나왔다.

2026.06.01 - [스터디/코테 스터디(java)] - [코드트리] 백트래킹 알고리즘 약점 극복 학습 후기

 

[코드트리] 백트래킹 알고리즘 약점 극복 학습 후기

저번 코드 트리 학습 때 수행한 갭체크에서 아래와 같은 결과가 나왔다. 그래서 이번주에는!! 갭체크에서 추천해준대로 백트래킹부터 학습을 시작했다. 이게 학습을 하고 문제를 풀면 씨앗에 싹

huynhuyn.tistory.com

 

 

 

그래서 이번주에는!! 갭체크에서 추천해준대로 백트래킹부터 학습을 시작했다. 

 

이게 학습을 하고 문제를 풀면 씨앗에 싹이 난다.  ㅋㅋ

근데 내 새싹은... 세개다 ㅠㅜ 이번주에 내 생각보다 훨씬 적게 풀었다. 저번주 갭체크 이후 내 목표는 얼마나성장했을지 다시 한 번 갭체크를 통해 확인하는 거였는데 한 주를 보내보니 좀 더 구체적인 계획을 세워야 겠다는 생각이 들었다. 일단 내가 학습한 내용 먼저 작성해보겠다.

 

개념

일단개념먼저 학습했다. 쭉 읽어봤는데 개념은 내가 대충 알고 있던것이었다. 문제는 여기다. 대충 알아서 응용 문제가 나오면 풀지 못했다. 그래서 이번에는 제대로 숙지해보자!! 심기일전하며 읽어보았다. 코드트리가 좋은 점은 개념을 알기 쉽게 정말 핵심만 쏙쏙 설명해준다는 것이다. 그리고 간단한 그림을 통해 설명을 해주는데 처음보는 사람들에게는 이게 이해하는 데 정말 큰 도움이 될 것 같다. 그리고 나한테도 정말 도움이 되었던 부분은 그림과 함께 몇번째 라인이 실행되고 있는 건지를 보여주는 부분이었다. 사진에 첨부된 것처럼 몇 번째 라인에서 실행이 되는 지를 알 수 있다. 

 

Warm-up 문제

 

그리고 문제를 풀었다. warmUp 문제답게 개념에 있었던 내용을 이용하는 문제가 나왔다. 나는 개념에 나왔던 거라서 구현하기 쉬울 줄 알았는데 생각을 한 번 하고 구현했다. 역시 직접 구현해보는 것과 머리로만 아는 것은 다르다는 것을 여실히 느꼈다. ㅠㅠ

 

문제 1

모를 수도

 

그리고 제대로 된 문제를 풀었다. 이게 완전탐색이고 백트래킹 Chapter라서 백트래킹을 써야한다는 것을 알지 그냥 문제만 보면 모를수도 잇겠다는 생각이 들었다. 코드자체는 warmUp문제와 크게 다른 부분이 없었는데 생각해내는 데 시간이 좀 걸렸다...;;

import java.util.*;

public class Main {
    public static ArrayList<Integer> list = new ArrayList<>();
    public static int N;
    public static int cnt = 0;

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        N = sc.nextInt();

        choose(0);

        System.out.println(cnt);
    }

    public static void choose(int currentNum){
        if(currentNum == N){            
            cnt++;            
            return;
        }else if(currentNum > N + 1){
            return;
        }

        for(int i = 1; i <= 4; i++){
            list.add(i);
            choose(currentNum + i);
            list.remove(list.size()- 1);
        }
    }
}

 

이거는 내가 푼 코드인데 핵심은 처음 재귀함수 돌릴 때 currentNum을 0부터 시작하는 게 핵심이었다. 최근에 ssafy 코테를 봤을 때 문제2번에서 인덱스 범위를 넘겨짚고 풀어 오류가 났던 게 생각이 났다. 문제는 정말 잘 읽어야 한다. 특히 첫 시작과 범위는 무조건!!

 

문제 2

다음 문제다. 이거는 백트래킹만 구현해놓고 그 다음 구현하는 게 힘들어서 지피띠니의 힌트를 좀 받앗다. ㅜㅜ수치스럽다!! 이런 좌표 문제 나오면 맨날 사고를 멈춘다. 그 이유를 생각해봤는데 내가 이차원 배열 int[][] 와 ArraList<>()를 능숙하게 다루지 못해 생기는 문제같았다. 선언과 초기화를 좀 더 열심히 공부해야겠다....

 

이번주 문풀은 이렇게만 했고 생각보다 매우 적게 했지만 매일매일(며칠은 쉬운 앞부분만 풀었다;;) 출석은 꼭지켰다. 매일9시마다 카톡이 오기 때문에 가능햇던 것같다...

 

후기 및 다짐

저번주에는 목표를 좀 대충 세워서 이번주에 지키지 못했던것 같다. 이번주에는 목ㅍ를 좀 더 구체적잉게 잡아서 다음주에 꼭 달성하고 싶다. 그리고 문제를 많이 풀지는 못했지만 일단 갭체크는 진행해보려 한다. 매일매일 갭체크를 하는 사람도 있다고 봤는데 나도 성장은 많이 한 거 같지는 않지만 일단 체크하는 데 의의를 두고 진행해봐야 겠다. 파이팅 ㅜㅠ!!

 

 

 

https://www.codetree.ai/ko/no-free-lunch-2026

 

3년 만에 돌아온, 코드트리 청약 통장 챌린지 | 코드트리

매주 학습 납입하고 7주 만기 채우면 코드트리 8월까지 무료. 매주 추첨권을 모아 맥북·에어팟·애플워치 응모까지. 신청 인원에 따라 조기마감될 수 있어요.

www.codetree.ai