대학 때 코딩테스트 공부를 하나도 안했었다.
애초에 코딩테스트를 공부해야 한다는 개념이 없었으며, 어떻게 공부해야할지도 백준이나 리트코드 사이트에서 많이 풀어본다 라는 막연한 방법만 알고 있었다.
내가 취업 할 때 코딩 테스트라는 프로세스는 생긴지 얼마 안됐었고, 몇 대기업만 차용해서 쓰던터라 자소서나 ncs, 혹은 기업 시험 등을 준비하는게 더 중요했다.
물론 당시 카카오, 네이버 등은 코딩테스트를 봤었다. ㅋㅋㅋ
가벼운 구현 문제 정도는 풀 수 있어서 그것만 믿고 공부를 더 안하기도 했던것 같다ㅋㅋㅋ
이후 면접 준비나 자소서를 더 열심히 준비한 끝에 좋은 회사에서 즐거운 회사 생활을 할 수 있었다.
그러나 이젠 이직하려면 코딩테스트는 거의 필수 관문이 되었다.
이전에 몇번 백준이나 리트코드에 들어가 공부를 깨작깨작 했는데, 끙끙 거리면서 풀고, 다른 사람이 내놓은 해답지를 봐도 전혀 이해가 안가서 금방 열정이 식어버리는 경우가 허다했다.
남들 다 공부하고 푸는 코딩테스트, 나랑은 안맞는구나 하고 자신감이 한참 떨어졌을 때 코드트리를 알게 됐다.
작년(22년)에 오픈채팅방에서 코드트리에서 무슨 이벤트를 한다해서 참여했었다.
당시 매주 3시간 온라인 수업을 듣고 강사님이 내주는 숙제를 내주는 커리큘럼이었다.
이번에는 제대로 좀 공부해보고 싶어 거금을 들여 수업을 신청했다.
당시 처음 들어보는 플랫폼이고 비용도 만만치 않았는데, 신청했던 이유는
첫 째, 교육 수료 하면 돌려주는 환급금. 정확히 얼마를 돌려줬는지는 기억이 안나나 거의 대부분을 돌려줬었다. 그래서 환급금 생각하면 투자할만 하다고 판단했다.
둘 째, 유명한 강사님. 내가 수업을 듣고 싶었던 반은 유명한 강사님이셨다. 강사님은 어떻게 문제에 접근하고 푸는지 궁금했다.
셋 째, 정말 괜찮았던 플랫폼과 문제의 질. 회원가입만 하면 1단계 book? 은 오픈해줬던걸로 기억하는데, 그 문제를 풀어보면서 그리고 이후 커리큘럼의 단계들을 풀면서 오 괜찮은데? 라고 느꼈다.
그래서 작년 교육을 수료하고 얼마 전 코딩테스트를 다시 공부해봐야지 않나 라는 생각이 들어 이번엔 all 내돈내산으로 결제했다.
이후 여간하면 매일 기준치를 풀려고 노력했다.
그러다 블로그 챌린지를 알게 되어 더 꾸준히 해보려고 신청까지 한 것이다 ㅋㅋㅋ
작년에 열심히 코테 준비를 했지만, 1년만에 싹 날아가서 다시 으쌰으쌰하며 복기하며 지옥불을 심었다.
(빨개서 지옥불...)
왜 기준이 Oct 지?? 8월에 시작했는데... 뭔가 오류인듯...
이후 처음 실력진단을 봤는데 시간제한이 있으니 쫄리더라... 문제도 잘못 이해하고...
그래도 이해한 문제는 다 풀었다.
기가 막히게 백트래킹 공부를 안해서 못풀었는데 딱 찝어줌... ㅠㅠ
분명 작년에 공부했는데 올해 복습을 안해서 하나두 기억이 안났다 흑흑
그래서 5분 멍때리고 문제 스킵을 했다 ㅋㅋㅋㅋ
그래서 아주 간단하게 백트래킹 공부를 해보자
백트래킹 문제를 봤을 때 재귀를 쓰면 된다 까지는 인지했지만, 그래서 더 뭘 해? 란 생각이 들었다.
관련문제 : https://www.codetree.ai/missions/2/problems/n-permutation/introduction
N! 순열 문제를 풀어야 할 경우
vistied 배열을 활용해 이미 선택한 수라면 넘어가고 안넘어간 수라면 visited = True 처리를 하고 답변에 포함하면 된다.
그후 재귀를 활용해 해당 함수를 다시 실행시킨다.
이게 문제와 답안을 어디까지 노출해도 되는지 모르겠는데...
대략
def choose(curr_num):
for i in range(1, n+1):
if visited[i]:
continue
visited[i] = True
answer.append(i)
choose(curr_num+1)
answer.pop()
visited[i] = False
choose(1)
이런식으로 활용하면 된다.
지난주에 블로그 글 쓸 시간이 없어서 후다닥 작성했는데, 다음엔 미루지 말고 바로바로 써야지...