[문제]https://www.codetree.ai/training-field/frequent-problems/problems/codetree-mon-bread?&utm_source=clipboard&utm_medium=text 코드트리 | 코딩테스트 준비를 위한 알고리즘 정석국가대표가 만든 코딩 공부의 가이드북 코딩 왕초보부터 꿈의 직장 코테 합격까지, 국가대표가 엄선한 커리큘럼으로 준비해보세요.www.codetree.ai으레 구현문제가 그렇듯이, 아이디어를 떠올리냐 못하냐의 싸움인 거 같습니다. 베이스캠프를 선정하는 방법을 떠올리지 못하면 그저 어려운 문제가 되는데, 방법을 떠올리는 순간 간단하게 풀 수 있습니다. 또한 해당 아이디어가 특출 난 것이 아니라 매우 간단한 것이라, 사람에 따라 허탈할 수도..
Algorithm/코드트리
[문제]https://www.codetree.ai/training-field/frequent-problems/problems/battle-ground/description?page=3&pageSize=5 코드트리 | 코딩테스트 준비를 위한 알고리즘 정석국가대표가 만든 코딩 공부의 가이드북 코딩 왕초보부터 꿈의 직장 코테 합격까지, 국가대표가 엄선한 커리큘럼으로 준비해보세요.www.codetree.ai문제를 따라 읽으며 그대로 구현하면 되는 문제입니다. 크게 어려운 테크닉은 없으며, 반대 방향 및 회전에 대해서만 주의하시면 되겠습니다.[초기화] def __init__(self): self.n, self.m, self.k = map(int, input().split()) sel..
6주 차는 PQ(Priority Queue)에 대해 학습했습니다. 해당 자료구조에 대해 개념적으로 이해하고 있고 문제를 풀 때, 탐색 시간을 최적화할 때 사용할 수 있는 것도 알고 있지만 해당 유형의 문제를 많이 풀지 않았다 보니, 문제를 풀 때 쉽게 떠올리지 못해 연습하는 시간을 가졌습니다. 파이썬의 경우, 자바와 달리 우선순위 큐가 라이브러리로 구현되어 있지 않기 때문에 우선순위 큐의 연산을 구현할 수 있는 heapq 라이브러리를 사용해 문제를 풀 수 있습니다. heapq는 이진트리로 구현된 자료구조로 값의 삽입 및 삭제 연산의 시간복잡도를 O(log n)으로 수행할 수 있습니다. https://www.codetree.ai/missions/8/problems/process-numeric-command..
5주 차는 DFS(Depth-First Search)에 대해 학습하였습니다. 평소 그래프 문제는 BFS(Breadth-First Search)로 풀다 보니 막상 DFS로 푸는 방법이 생각나지 않았습니다. 저번주차까지 Backtracking에 대해 학습했으므로 응용 및 복습 겸 진행해 보았습니다. https://www.codetree.ai/missions/2/problems/determine-escapableness-with-2-ways?&utm_source=clipboard&utm_medium=text 코드트리 | 코딩테스트 준비를 위한 알고리즘 정석국가대표가 만든 코딩 공부의 가이드북 코딩 왕초보부터 꿈의 직장 코테 합격까지, 국가대표가 엄선한 커리큘럼으로 준비해보세요.www.codetree.ai요약하..
4주 차도 Backtracking에 대해 학습했습니다. 실력 진단을 수행했는데, 해당 유형의 문제를 풀지 못했습니다.https://www.codetree.ai/missions/2/problems/select-segments-without-overlap?&utm_source=clipboard&utm_medium=text 코드트리 | 코딩테스트 준비를 위한 알고리즘 정석국가대표가 만든 코딩 공부의 가이드북 코딩 왕초보부터 꿈의 직장 코테 합격까지, 국가대표가 엄선한 커리큘럼으로 준비해보세요.www.codetree.ain = int(input())lines = [tuple(map(int, input().split())) for _ in range(n)]answer = 0selected_lines = []def..
3주 차는 Backtracking에 대해 학습했습니다. 생각하지도 못했는데 굉장히 취약했던 유형이었습니다. 자주 풀었을 땐, 선택하거나 선택하지 않거나의 개념이 그려졌었는데 그래프 유형이나 시뮬레이션, 구현류의 문제들만 풀다 보니 감이 사라져서 대부분의 문제를 정답을 확인했던 주입니다. https://www.codetree.ai/missions/2/problems/n-permutations-of-k-with-repetition?&utm_source=clipboard&utm_medium=text 코드트리 | 코딩테스트 준비를 위한 알고리즘 정석국가대표가 만든 코딩 공부의 가이드북 코딩 왕초보부터 꿈의 직장 코테 합격까지, 국가대표가 엄선한 커리큘럼으로 준비해보세요.www.codetree.ai굉장히 기본적인..
2주 차는 DP에 대해 학습했습니다. 저는 DP, 이분탐색/이진탐색과 같이 최적화 관련 유형들을 제대로 풀지 못하기 때문에 이번 기회에 학습해 보려 합니다. 우선 DP의 개념에 대해 다시 정리하는 시간을 가졌습니다.[ Dynamic Programming의 개념]DP( Dynamic Programming)하나의 큰 문제를 여러 개의 작은 문제로 나눠 점진적으로 해결하며 해당 결과를 이용해 기존의 큰 문제를 풀어내는 방법나눠진 문제는 규모만 작을 뿐 기존의 문제와 동일한 문제구현 방식MemoizationTop-down재귀를 이용해 큰 수를 작은 수로 쪼갬TabulationBottom-up반복문을 이용해 작은 수에서 큰 수로 늘려감이론적으로 두 방식의 시간 복잡도는 동일하나, 일반적으로는 Tabulation이..
1주 차는 구간 칠하기 유형에 대해 학습을 진행하였습니다. 작년 봄쯤에 해당 유형 문제를 독특하게 해결했던 기억이 납니다. 아래 문제의 경우 각 선분의 영역을 포함하는 집합을 생성해, 합집합 연산을 통해 공통되는 부분을 추려 총길이를 구하는 방식으로 해결하였습니다.https://school.programmers.co.kr/learn/courses/30/lessons/120876 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 해당 유형을 딱히 접해본 적이 없어서 아예 유형으로 정형화 되어있는지 몰랐기 때문에 이번 기회에 학습을 진행하였습니다.[블럭쌓는 명령2]..