본문 바로가기

CodingTest

(40)
[코드트리 후기] 북마크로 나만의 오답노트 & 복습 루틴 만들기 안녕하세요, 점점 코드트리 챌린지도 막바지로 다가가고 있네요. 이번에 소개해드릴 내용은 코드트리의 '북마크' 기능입니다!코드트리의 장점인 트레일을 따라 순서대로 개념을 익히고 문제를 풀어도 특히 약한 부분, 혹은 다시 한 번 풀어보고 싶은 부분이 나오기 마련인데요, 이런 상황에서 코드트리 북마크 기능을 통해 나만의 오답노트 겸 복습 루틴을 만들 수 있습니다. 북마크 폴더 분류 기준과 이름 짓기처음엔 그냥 다 한 폴더에 넣었다가 금방 뒤죽박죽이 됐어요. 그래서 여러 북마크 폴더를 만들고 다음과 같은 기준으로 북마크 한 문제들을 정리했어요.🔁 다시 풀 문제 : 틀렸거나, 풀긴 했지만 해설을 보고서야 이해한 문제. 한 번에 못 풀었던 건 여기로. (오답 복습이 필요한 것들)⭐ 유형별 핵심 : 그 유형을 대표..
[코드트리 후기] 깃허브 잔디 심기 활용해서 독학으로 코딩테스트 루틴 만들기 안녕하세요! 요즘 코드트리를 활용해 코딩테스트 독학에 매진하고 있는 가운데, 벌써 4회차 미션을 맞이하게 되었습니다.혼자서 코테 공부를 하다 보면 가장 힘든 게 바로 '꾸준함'을 유지하는 것인데요. 처음에 가졌던 마음과 달리 며칠만 지나도 까먹고, 하루 이틀 미루다 보면 결국 흐지부지되기 십상입니다.하지만 코드트리에는 학습자가 지치지 않고 매일매일 코딩하는 습관을 지닐 수 있도록 돕는 동기부여 기능들이 숨어 있습니다. 꾸준한 코테 공부 루틴을 유지하기 위해 코드트리에서 가장 잘 활용하고 있는 기능을 알려드리려고 합니다. 1. 깃허브(Github) 연동 기능으로 잔디심기를 통해 가시화 가능제가 코드트리에서 가장 유용하게 쓰고 있는 기능은 바로 '깃허브 연동'입니다.코드트리에서 문제를 풀면 자동으로 제 개인..
[코드트리 후기] 구현/조건문(겹치는 경우) 알고리즘 분석하기 코딩테스트를 준비하다 보면 거창한 알고리즘(DP, BFS 등)이 아니더라도, 은근히 발목을 잡는 기초 유형들이 있습니다. 조건문을 조금만 잘못 짜면 예외 케이스에서 오답이 나게 됩니다. 오히려 이런 부분들은 유명한 DP, BFS 알고리즘처럼 공식화되어있거나 잘 정리되어 있는 것을 찾기 어려운 것 같아요. 이러한 부분들을 개인적으로 터득하기 위해선 여러 문제를 풀어보며 익히고 스스로 정리해서 파악할 수 밖에 없다고 생각합니다. 그러나 코드트리에서 학습한다면, 유형별로, 단계별로 구분되어 웬만한 유형을 다 파악할 수 있습니다 :) 대표적으로 이번 게시물에선, 코드트리(CodeTree)의 Novice Mid 단계, Chapter 9. Lesson 1 겹치는 경우 파트를 중점적으로 알아보겠습니다. 🌳 코드트..
[코드트리 후기] 코딩테스트 준비, 갭체크부터 시작하기 안녕하세요. 제가 평소 애용하는 코드트리(https://www.codetree.ai/ko/trail-info)에서 이벤트를 진행하여 글을 작성하게 되었습니다.저는 전공자이지만 따로 코딩테스트를 공부해오지 않아서, 전공강의를 통해 기본 개념은 숙지했지만 익숙하지도 않고 다 까먹기도 했었어요. 이런 상황에 취준을 시작하다보니 급하게 코딩테스트 준비를 제대로 해야했어요. (돈의 힘을 빌려서라도..) 코드트리는 모든 자료구조,알고리즘, 코딩테스트 빈출 문제를 단계별로, 그리고 유형별로 분류하여 개념, 문제, 해설을 제공합니다. 실제로 매우 만족해서 1년 가까이 사용했던 것 같아요. (지금은 경제적 이슈로 중단했습니다 ㅠㅠ) 그러나 이번에 코드트리 청약 통장 챌린지를 완수하면 무료 이용권을 주더라구요!!! 1회..
Topological Sort (위상정렬) 알고리즘 개념 정리 및 활용 방법 (python) Topological Sort란?- 순서가 정해져 있는 작업 처리해야 할 때 (선후 관계가 정해진 작업)- Direct Graph의 모든 노드를 방향성에 거스르지 않고 순서대로 나열하는 것- 조건 : DAG(Directed Acyclic Graph), 즉 방향이 존재하고 사이클이 없는 그래프여야 함. Topological Sort 구현 방법1. DFS 이용한 Topological Sort- dfs를 그대로 적용하되 하나의 동작만 추가하면 끝- 더 이상 이동할 노드 없으면 list에 추가 (재귀함수의 dfs에서 이웃 노드들 dfs호출한 뒤 for 문 뒤에 추가하면 됨)import sysfrom collections import deque sys.setrecursionlimit(10 ** 6) n, m = ..
Kruskal & Prim (MST) 알고리즘 개념 정리 및 활용 방법 (python) Kruskal과 Prim 알고리즘은 최소 신장 트리 (MST, Minimum Spanning Tree)의 핵심 알고리즘입니다. 최소 신장 트리 (MST, Minimum Spanning Tree)란?- 모든 노드를 연결하면서 사이클이 없는 트리 중 가중치의 합이 최소인 상태의 트리를 최소 신장 트리라고 합니다.- 예를 들어, 도시 간 도로망 구축, 통신망 설계 등 최소 비용으로 모든 지점을 연결해야 하는 상황에서 필요한 알고리즘입니다.(그리고 이러한 경우엔 N개의 노드로 이루어져 있다면 간선은 N-1개가 되고, 트리형태가 됩니다) 이런 최소 신장 트리를 구하기 위한 대표적인 방법이 Kruskal과 Prim 알고리즘인데요, 이 둘은 어떤 것을 중심으로 할 것이냐에 따라 결정됩니다. Edge를 중심으로 보면..
Union-Find (Disjoint) 개념 정리 및 활용 방법 (python) Union-Find 알고리즘이란?여러 노드가 주어졌을 때, 두 노드가 같은 집합에 속해 있는지 판별하거나 이 두 노드의 집합을 합칠 때 유용하게 사용할 수 있는 알고리즘입니다. 필요한 자료구조리스트 (각 원소가 속해있는 그룹의 리더 값 저장) - 초기엔 본인의 값이 그대로 저장되어 있음 필요한 함수 Union : 두 개의 집합을 하나로 합치는 연산- 합치고자 하는 두 원소의 리더를 찾고 조건에 따라 하나의 리더를 다른 리더의 값으로 덮어쓰기 Find : 특정 원소가 속한 집합의 조상 혹은 대표자(root)를 찾는 연산- 재귀 함수를 통해 리더의 리더의 리더의.. (즉 대빵 리더) 찾기. def find(parent, x): if parent[x] == x: return x re..
[BOJ 1110] 백준 더하기 사이클 - C++ 사용언어 : C++ 문제풀이 (1) 필요한 변수 N(int), count(int), result(int) N : 처음에 입력 받은 이후엔 계속 고정되는 원래의 값 count : 출력에서 요구하는 값 result : N과 비교할 수 있는 일시적인 결과값 int N; int count = 0; cin >> N; int result = N; 이 때, result값은 임의로 N값으로 초기화 해준다. (2) 반복문 구성 (+ result 값 계산) 우선 무한루프를 돌려준다. 적어도 한 번은 계산해줘야 함! (문제 자체가 계산을 몇 번 하는 건지 요구하는 것 + result를 N으로 초기화했기 때문에 당연히 처음엔 result와 N은 같음) result 의 10의 자릿수 : 이전 값의 1자릿수 (26이면 6) =>..