백준을 시작한 지 얼마 되지 않은 나로서는 아직까지 이런 긴 문항을 가진 문제가 참 익숙치 않다.하지만 그렇다고 해서 마냥 포기할 수는 없는 노릇이다. 언제까지고 실버 5~4 문제만 풀 수는 없으니까.그래서 이 참에 눈 딱 감고 한번 도전해봤다. 틀리더라도 해답을 보면
조합과 순열, 이 두개는 정말 계속해서 나오는 친구들이라고 생각한다. 수학 열심히 하길 잘했다.지금은 고등학교 과정에서 수열을 배우지 않는다는 소식을 들었을 때, 필자는 정말로 큰 충격에 빠졌다.'그럼, 수열을 전혀 모르는 사람들은 이 문제를 어떻게 풀 수 있을까?'
이 친구도 완전 탐색 으로 풀면 되겠네! 라는 안일한 생각을 가졌습니다.요새 브루트 포스 문제를 많이 풀다보니, 일단 뭐든지 완전 탐색으로 풀어보자는 마인드가 생겼다.이번 문제도 존재하는 모든 경우의 수를 탐색해보자는 결론이 나왔고, 아래와 같이 설계를 시작했다.이번
동적 프로그래밍은 정말 종류가 다양하게 나와서 매번 머리가 아프다.DP (Dynamic Programming) 문제를 어느덧 20개 이상 접하였지만, 아직도 점화식을 세울때마다 머리가 아픈 건 어쩔 수 없나보다.더 많이 깨지고 부셔져야 문제를 푸는 직관력이 늘어나겠지만
이번에도 동적 프로그래밍 이지만.. 점화식 자체를 좀처럼 세우지 못하였다.이번 문제도 나에게는 너무나 어려운 동적 프로그래밍이다. 20분 간의 고민을 하며 이것저것 프로그램을 설계하였으나 결국 시간 초과로 인해 힌트의 도움을 받아야만 했던 문제였다.하지만 막상 답안을
https://www.acmicpc.net/problem/1012처음으로 학습한 그래프 이론 문제를 도전해보는 마음 가짐으로!이번 문제는 참 안타깝게 풀지 못하고 답지의 힘을 빌렸으나, 결국 풀이 방식이 아닌 엉뚱한 곳에서 실수를 했다는 사실을 깨닫고선 속으로
https://www.acmicpc.net/problem/9465오랜만에 동적 프로그래밍 문제를 한번 복습하는 차원에서 도전해보았다.이번 문제는 점화식을 잘 세웠다고 생각했으나, 고려하지 않아도 될 조건까지 포함시켜 해결하지 못했다.동적 프로그래밍에서 가장 핵
https://www.acmicpc.net/problem/10026너비 탐색인 BFS 적절히 잘 활용해야 하는 문제를 풀어보았다.이번 문제는 BFS를 사용하여 연결 요소의 갯수를 구하는, 비교적 난이도가 평이한 문제였다.확실히 단순 탐색의 경우 재귀를 사용하는
https://www.acmicpc.net/problem/14502브루트 포스와 BFS 탐색을 적절히 활용하여 풀어야 하는 문제처럼 보였다.이번 문제는 기본적으로 BFS를 사용하되, 브루트 포스 방식으로 해결을 봐야 하는 문제였다.처음엔 더 나은 방법이 없을까
https://www.acmicpc.net/problem/15686간만에 풀어보는 브루트 포스 알고리즘과 순열 응용 문제다. 이번 문제는 순수하게 완전 탐색 을 통해 원하는 값을 도출해야 하는 문제였다.브루트 포스와 구현 문제는 오랜만이라 문제를 푸는 과정에서
https://www.acmicpc.net/problem/11725오늘 처음 학습한 트리 자료구조 탐색에 관한 문제를 풀어보았다.이번 문제는 트리의 부모 노드를 BFS, DFS 탐색을 통해 알아내는 문제였다.비교적 구현이 간단한 DFS 탐색을 먼저 시도하였으나
https://www.acmicpc.net/problem/1068오늘 처음 학습한 트리 자료구조 탐색에 관한 문제를 풀어보았다.이번 문제는 트리를 구축하고, 이 중 일부를 제거한 나머지 중에서 단말 노드의 수량을 구해야 했다.트리의 일부를 어떻게 제거할 지,
https://www.acmicpc.net/problem/1967트리 자료구조를 학습할 겸, 더 어려운 문제 를 풀어보기로 하였다.이번 문제는 무방향 그래프이자, 사이클이 없는 트리의 특성을 이용한 지름 찾기 알고리즘이었다.처음에는 트리에 지름이 있다고? 라는
https://www.acmicpc.net/problem/5639트리를 어떤 방식으로 탐색하느냐 에 따라 검색 과정이 달라질 수 있다. 이번 문제는 일전에 트리 자료구조를 학습하면서 배웠던 전위, 후위 탐색과 관련된 문제였다.이전까지는 단순히 탐색 과정이 다르
https://www.acmicpc.net/problem/5639각기 다른 트리의 탐색 결과 를 토대로 다른 탐색을 유추하는 문제였다.이번 문제는 일전에 트리 자료구조를 학습하면서 배웠던 중위, 후위 탐색과 관련된 문제였다.분명 저번 문제도 트리 탐색과 관련된
https://www.acmicpc.net/problem/11052오랜만에 풀어보는 동적 프로그래밍 문제다.이번 문제는 동적 프로그래밍 (DP) 을 통해 구매 가격의 최댓값을 구해야 했다.처음 점화식은 정말 잘 작성했지만, 이를 코드로 어떻게 구현해야 할지가
https://www.acmicpc.net/problem/11052BFS 탐색과 관련된 문제도 복습 차원에서 풀어보았다.이번 문제는 너비 우선 탐색 (BFS) 을 통해 최적의 경로를 구해야 하는 문제였다.알고리즘 설계도 막힘이 없었고, 코드 작성도 한번에 진행
https://www.acmicpc.net/problem/2630분할 정복과 재귀를 활용하는 문제를 찾아서 한번 풀어보려고 했다.이번 문제는 분할 정복과 재귀 함수를 적절히 사용하여 알고리즘을 설계해야 했다.처음으로 풀어보는 분할 정복 문제였지만, 그간 다른
https://www.acmicpc.net/problem/2630분할 정복과 재귀를 활용하는 문제를 찾아서 한번 풀어보려고 했다.이번 문제는 분할 정복과 재귀 함수를 적절히 사용하여 알고리즘을 설계해야 했다.일전에 풀었던 색종이 자르기 문제와 유사한 점이 많아
https://www.acmicpc.net/problem/2630BFS 탐색을 기반으로 브루트포스를 가미하여 풀어야 하는 문제다.이번 문제는 BFS 탐색과 완전 탐색을 적절히 사용하여 풀어야 하는 문제였다.처음 설계한 알고리즘이 시간 초과를 일으켜 어떤 점이
https://www.acmicpc.net/problem/1780분할 정복을 기반으로 하되, 분할의 범위를 신중히 결정해야 하는 문제.이번 문제는 분할 정복과 BFS 탐색을 사용하여 풀어야 하는 문제였다.처음 분할 정복에 쓰일 범위를 지정하는 과정에서 꽤나 애
https://www.acmicpc.net/problem/4949스택 을 사용하여 열고 닫는 괄호의 양식이 올바른지를 체크하는 문제.이번 문제는 문자열 탐색과 스택을 사용하여 풀어야 하는 문제였다.이전에 비슷한 문제를 풀어본 적이 있어 비교적 수월하게 해결하였
https://www.acmicpc.net/problem/4949우선 순위 큐를 사용하여 가장 작은 수를 추출해야 하는 문제.이번 문제는 우선순위 큐와 힙 자료구조을 사용하여 풀어야 하는 문제였다.처음으로 학습하는 알고리즘인 만큼, 더 다양한 문제를 풀기 위해
https://www.acmicpc.net/problem/19638우선 순위 큐를 사용하여 가장 작은 수를 추출해야 하는 문제.이번 문제는 우선순위 큐와 힙 자료구조을 사용하여 풀어야 하는 문제였다.우선순위 큐와 관련된 문제를 찾던 중, 그나마 만만해보여서 (
https://www.acmicpc.net/problem/6236이분 탐색을 사용하여 인출 금액의 최솟값을 구해야 하는 문제였다.이번 문제는 이분 탐색을 사용하여 최솟값을 도출해야 하는 문제였다.오랜만에 이분 탐색을 복습할 겸 문제를 골랐지만, 결국 답안의 도
https://www.acmicpc.net/problem/2493스택을 사용하여 더 효율적으로 탐색을 진행해야 하는 문제다.이번 문제는 스택 자료구조를 사용하여 탐색 과정을 최적화 해야 하는 문제였다.이 문제 또한 처음에는 완전 탐색으로 접근하였으나, 결국 답
https://www.acmicpc.net/problem/11559BFS 탐색을 사용하되, 문제에서 요구하는 기능을 잘 구현해야 하는 문제였다.이번 문제는 그래프 이론을 활용하여 작은 게임 시스템을 구현해야 하는 문제였다.구현에 필요한 기능을 나열한 후, 이를
https://www.acmicpc.net/problem/1072이진 탐색을 사용하여 최솟값을 도출해내는 문제였다.이번 문제는 이진 탐색을 활용하여 범위 내 최솟값을 산출해야 하는 문제였다.탐색의 시작과 끝을 정한 후, 이진 탐색을 통해 수월하게 정답을 맞추었
https://www.acmicpc.net/problem/14888백트래킹을 사용하여 최대 / 최솟값을 도출해내는 문제였다.이번 문제는 백트래킹을 활용하여 계산 결과의 최대, 최솟값을 구해야 했다.백트래킹에 대한 이해도가 아직 부족해서인지, 알고리즘을 쉽게 떠
https://www.acmicpc.net/problem/1072누적 합을 사용하여 연속하는 수열 중 최댓값을 찾는 문제였다.이번 문제는 투 포인터를 활용하여 수열의 합 중 최댓값을 구하는 문제였다.투 포인터라는 개념을 전혀 모르고 있었기에, 이번 기회로 알고
https://school.programmers.co.kr/learn/courses/30/lessons/42883스택을 활용하여 그리디 알고리즘을 구현해야 하는 문제였다.이번 문제는 스택을 활용하여 그리디 알고리즘을 구현해야 하는 문제였다.오랜만에 코테 문제를
https://school.programmers.co.kr/learn/courses/30/lessons/81301본 문제는 3학년 2학기 알고리즘 소모임 알고리듬 활동으로 풀이한 문제입니다.오랜만에 보는 문자열 알고리즘 문제, 비교적 쉽게 풀이할 수 있었다.이
https://www.acmicpc.net/problem/1697BFS 탐색을 사용하여 1차원 배열을 순회하는 문제다.이번 문제는 BFS를 활용하여 1차원 배열 내부를 순회하는 문제였다.최근 2달 간의 휴식으로 감이 많이 무뎌졌기에, 스스로 많이 반성하는 시간
https://www.acmicpc.net/problem/1043Python에서 제공하는 Set 자료구조를 활용하여 문제를 풀었다.하지만 이 외에도 Union-Find 알고리즘으로도 풀이가 가능하다.이번 문제는 Set 자료구조와 교집합, 합집합 연산을 통해 구
https://www.acmicpc.net/problem/1717Union - Find 알고리즘을 사용한 분리 집합 문제를 풀어보자.이번 문제는 Union-Find 알고리즘을 활용한 분리 집합 개념을 활용했다.Union - Find 의 기본 개념과도 같은 문제
https://www.acmicpc.net/problem/13549BFS 알고리즘을 사용하였으나, 약간의 발상 전환이 필요하다.이번 문제는 BFS 탐색 알고리즘을 활용한 그래프 탐색 문제였다.간만에 풀어보는 그래프 탐색 문제인지라 꽤 긴장했다. 다 까먹었을까봐
https://www.acmicpc.net/problem/9935스택 자료구조를 활용하여 문자열을 처리하는 방식을 채택했다.이번 문제는 스택 자료구조를 활용하여 문자열을 처리하는 방식이었다.문자열과 스택의 활용은 내게 어려운 문제라서 설계에 신중을 가했다.폭발
https://www.acmicpc.net/problem/4195유니온 파인드 와 해시 자료구조를 활용하여 푸는 문제였다.이번 문제는 딕셔너리 자료구조를 활용하여 유니온 파인드를 쓰는 문제였다.유니온 파인드가 비교적 어려운 알고리즘이라 생각해서, 이를 계속 풀
https://www.acmicpc.net/problem/1987BFS, DFS 알고리즘을 활용하여 이차원 배열을 순회하는 문제다.이번 문제는 BFS, DFS 를 활용하여 이차원 배열을 순회하는 문제였다.그래프 탐색의 경우 가장 자신 있는 분야였기에, 골드 문
https://www.acmicpc.net/problem/3190그래프 탐색 으로 지문의 요구사항을 그대로 구현하는 문제였다.이번 문제는 그래프 탐색 알고리즘을 통해 게임을 구현하는 문제였다.흔히들 빡구현이라고 많이 부르는 문제였는데, 생각보다 재미있게 풀었다
https://www.acmicpc.net/problem/2239백트래킹 과 DFS 탐색 을 적절히 활용하여 푸는 문제.이번 문제는 백트래킹 과 DFS 탐색 을 둘 다 활용하여 푸는 문제였다.스도쿠 로직을 구현해본 것은 처음이었기에, 제법 인상 깊은 문제였다.
https://www.acmicpc.net/problem/16236이차원 배열을 BFS 탐색 으로 조사하여 풀어야 하는 구현 문제.오늘은 예전에 지인에게서 추천받았던 문제를 한번 풀어보았다.문제를 푸는 과정이 생각보다 흥미로워 풀이 기록을 남기고자 한다.현재