문제 링크 : https://www.acmicpc.net/problem/2503이 문제는 주어진 N의 크기가 크지 않고, 반복문을 도는 횟수도 많지 않아 완전탐색으로 충분히 풀 수 있는 문제입니다.문제의 핵심 풀이는 다음과 같습니다. 답으로 예상되는 모든 숫자
문제 링크 : https://www.acmicpc.net/problem/17298이 문제는 주어진 N의 값이 1,000,000이므로 완전탐색으로 풀 경우 반복문을 2번 이상 돌게 되어 시간 초과가 나게 됩니다. 따라서 이 문제는 반복을 최소로 하면서 어떻게 효
문제 링크 : https://www.acmicpc.net/problem/2696이 문제는 우선순위 큐를 이용하여 문제를 풀 수 있습니다. 우선 큰 수를 가지고 있는 최대 힙과 작은 수를 가지고 있는 최소 힙을 설정합니다. 만약 1,2,3,4,5가 있다면 1,2
문제 링크 : https://www.acmicpc.net/problem/1715이 문제는 우선순위 큐를 이용하면 쉽게 풀 수 있습니다. 문제 특성상 최소의 비교를 하기 위해선 작은 수들끼리의 합을 통한 비교가 되어야 합니다. 이 때 우선 순위 큐에 데이터가 추
문제 링크 : https://www.acmicpc.net/problem/1039이 문제는 bfs를 통해 풀 수 있습니다. 처음에는 백트래킹으로 생각해서 접근했더니 계속 메모리 초과가 났는데 다시 생각해보니 탐색을 다시 처음으로 돌아와서 진행할 필요 없이 쭉 변
문제 링크 : https://www.acmicpc.net/problem/1182이 문제는 백트래킹을 통해 풀 수 있습니다. bfs나 dfs로 풀기에는 경우의 수가 더 많기 때문에 백트래킹으로 풀어 모든 경우를 체크하고, 중복으로 셀 수 있는 부분을 조절하기 위
문제 링크 : https://www.acmicpc.net/problem/9663이 문제는 접근 방식을 다르게 하여 문제를 풀어야 합니다. 가장 직관적으로 문제를 풀 수 있는 방법은 2차원 배열을 만든 후 퀸을 하나하나 움직이면서 퀸이 존재하지 않는 경우 퀸을
문제 링크 : https://www.acmicpc.net/problem/2580이 문제는 백트래킹 방식을 이용하여 문제를 풀 수 있습니다. 0으로 입력받은 좌표값에 1부터 9까지 차례대로 넣어보고 스도쿠의 조건, 즉 새롭게 추가한 숫자가 현재 가로줄, 세로줄,
문제 링크 : https://www.acmicpc.net/problem/17136이 문제는 백트래킹을 이용하여 풀 수 있습니다. 이 문제는 문제에서 얘기한 조건을 차례대로 구현해나가면 풀 수 있습니다.기본적인 탐색은 가로 방향으로 한 칸씩 진행하고, 끝 칸에
문제 링크 : https://www.acmicpc.net/problem/2839이 문제는 그리디 알고리즘 문제로 아이디어만 생각난다면 쉽게 풀 수 있습니다.가장 적은 봉지를 들고 가기 위해선 더 많은 설탕을 담을 수 있는 5킬로그램 봉투가 많아야 합니다. 따라
문제 링크 : https://www.acmicpc.net/problem/1003이 문제는 dp 문제입니다. 문제가 요구하는 점화식을 만들어낼 수 있다면 쉽게 풀 수 있습니다.문제에서는 0이 출력된 횟수와 1이 출력된 횟수를 물어보고 있습니다. 만약 입력된 수가
문제 링크 : https://www.acmicpc.net/problem/2133이 문제는 dp 문제입니다. dp 문제이니만큼 문제에서 요구하는 점화식을 잘 세우면 쉽게 풀 수 있습니다.우선 홀수 개수일 경우에는 타일을 전부 채울 수 없기 때문에 0의 경우의 수
문제 링크 : https://www.acmicpc.net/problem/1720이 문제는 dp 문제입니다. 문제에서 요구하는 점화식을 잘 세운다면 풀 수 있습니다.우선 각 경우의 수에서 좌우 대칭인 타일 수를 A, 좌우 대칭이 아닌 타일 수를 B라고 했을 때
문제 링크 : https://www.acmicpc.net/problem/13460이 문제는 bfs를 이용하여 문제의 조건들을 하나한 구현한다면 풀 수 있습니다.우선 구슬을 움직이는 로직을 먼저 짜야 합니다. 구슬의 움직임의 특징은 한 방향으로 장애물이 나올때까
문제 링크 : https://www.acmicpc.net/problem/12100이 문제는 백트래킹을 이용하여 문제의 조건들을 구현한다면 풀 수 있습니다.우선 문제에 나열된 조건들을 정리해보면상하좌우 방향 중 하나로 이동하며 해당 방향으로 모든 블록이 움직인다
문제 링크 : https://www.acmicpc.net/problem/17143이 문제는 완전탐색 문제입니다. 문제의 조건을 하나하나 구현해나가면 쉽게 풀 수 있습니다.이 문제의 가장 핵심은 상어의 이동 방향과 이동 속도를 어떤 식으로 처리할 것인지입니다.
문제 링크 : https://www.acmicpc.net/problem/14499이 문제는 문제에 나온 조건을 하나하나 구현하면 쉽게 풀 수 있습니다.이 문제의 가장 핵심은 주사위를 굴리는 방법입니다. 주사위를 각 방향대로 굴렸을 때 가장 위와 가장 아래에 어
문제 링크 : https://www.acmicpc.net/problem/14500이 문제는 백트래킹을 사용하여 풀 수 있습니다.문제의 특징을 잘 살펴보면, 4개의 블록을 만들 수 있는 경우의 수는 특정 시작점으로부터 4칸 연속으로 이동하는 경우의 수와 같습니다
문제 링크 : https://www.acmicpc.net/problem/14503이 문제는 문제의 조건대로 하나하나 구현해나가면 쉽게 풀 수 있습니다.문제의 편리한 점은 외곽이 모두 벽이기 때문에 배열 밖으로 나가는 부분에 대해서 벨리데이션을 진행할 필요 없이
문제 링크 : https://www.acmicpc.net/problem/14890이 문제는 문제의 조건대로 하나하나 구현해나가면 쉽게 풀 수 있습니다.이 문제의 핵심은 경사로를 놓는 경우의 수를 어떤 식으로 설정하는가입니다. 경사로는 크게현재 값보다 큰 수를
문제 링크 : https://www.acmicpc.net/problem/15683이 문제는 백트래킹을 이용하여 문제의 조건대로 하나하나 구현해나가면 풀 수 있습니다.이 문제의 접근 방식은 단순합니다. 각 CCTV 타입 별로 칸을 하나하나씩 읽어나가면서 감지 가
문제 링크 : https://www.acmicpc.net/problem/15685이 문제는 드래곤 커브 작성의 규칙성을 찾아내면 풀 수 있습니다.이 문제의 가장 어려운 부분이 바로 드래곤 커브의 규칙성을 찾아내는 것인데요, 각 케이스 별로 나눠보면 다음과 같습
문제 링크 : https://www.acmicpc.net/problem/16234이 문제는 bfs를 이용하여 각 조건을 구현하면 됩니다.bfs를 이용하여 인접한 칸이 L 이상 R 이하일 경우 큐에 추가하고, 연합에 속하게 된 칸의 좌표와, 인구수 그리고 칸의
문제 링크 : https://www.acmicpc.net/problem/16235이 문제는 문제에 주어진 조건대로 하나하나 구현하면 됩니다.이 문제의 포인트는 어떻게 어린 나무들을 먼저 양분을 먹게 할 것인지를 체크하는 것입니다. 저는 우선순위 큐를 나이를 기
문제 링크 : https://www.acmicpc.net/problem/16236이 문제는 bfs와 문제의 조건을 하나씩 구현해나가면 풀 수 있습니다.이 문제에서 가장 처리하기 어려웠던 부분은 같은 조건인 물고기가 여러 마리일 때 어떤 식으로 처리하는지에 관한
문제 링크 : https://www.acmicpc.net/problem/1655 이 문제는 우선 순위 큐를 이용하여 풀 수 있습니다. 중간값을 체크하기 위해 중간값 기준 작은 수를 담고 있는 우선순위 큐와 중간값 기준 큰 수를 담고 있는 우선순위 큐를 두 개 만듭니다
문제 링크 : https://www.acmicpc.net/problem/10819이 문제는 백트래킹으로 풀 수 있습니다. 처음엔 그리디 방식으로 최대값의 규칙이 있을 것이라 판단하였지만 규칙이 생각보다 복잡한 조건들이 있어 N의 범위가 적기 때문에 백트래킹으로
문제 링크 : https://www.acmicpc.net/problem/2146이 문제는 dfs와 bfs를 동시에 활용하는 문제입니다.이 문제의 접근을 위해선 크게 두 가지 작업이 필요합니다.문제에 주어진 섬들 간의 그룹핑 작업 : 각자 자신이 어떤 섬인지에
문제 링크 : https://www.acmicpc.net/problem/7573이 문제는 단순한 완전탐색 방식으로 풀면 시간 초과 또는 메모리 초과가 발생합니다. 만약 물고기가 존재하는 전체 범위를 int의 이차원 배열로 설정한다면 N의 범위가 10000까지이
문제 링크 : https://www.acmicpc.net/problem/4811이 문제는 dp 문제로 문제의 규칙성을 파악하면 풀 수 있습니다.이 문제의 핵심은 dp 배열을 어떤 식으로 설정하는가 입니다. 이 문제는 dp 배열을 이차원 배열로서 dpW : 한
문제 링크 : https://www.acmicpc.net/problem/2343이 문제는 이진 탐색을 이용하여 풀 수 있습니다. 완전 탐색으로 문제를 풀 경우 N = 100,000이어서 O(N^2) = 약 10,000,000,000으로 시간 초과가 발생하기 때
문제 링크 : https://www.acmicpc.net/problem/2573이 문제는 dfs와 문제의 로직을 잘 구현하면 풀 수 있습니다.문제의 로직은 다음과 같습니다.while(true) 반복문을 돈다.현재의 빙산 개수를 체크한다.만약 빙산 개수가 2 이
문제 링크 : https://www.acmicpc.net/problem/1937 이 문제는 dfs와 dp를 이용하여 풀 수 있습니다. 큐에 최대 1,000,000 이하의 데이터들이 500X500 배열 내에 존재하기 때문에 만약 bfs로 접근하게 된다면 2차적으로 큐
문제 링크 : https://www.acmicpc.net/problem/1107이 문제는 완전탐색으로 풀 수 있습니다. 다음의 프로세스대로 문제를 접근하시면 됩니다.시작 지점이 100이므로 100에서 N까지 (+,-) 버튼으로만 이동하는 경우의 수를 기본 결과
문제 링크 : https://www.acmicpc.net/problem/17822이 문제는 구현 문제입니다. 문제의 조건대로 하나하나 구현해나가면 풀 수 있습니다.이 문제의 핵심 풀이법은 원판을 이차원 배열로 변형하여 푸는 것입니다. 각 행을 하나의 원판으로
문제 링크 : https://www.acmicpc.net/problem/1654이 문제는 이진 탐색으로 풀 수 있습니다. K가 10,000 이하, N이 1,000,000 이하이기 때문에 이중 반복문을 돌리게 될 경우 O(10^10) 으로 시간 초과가 나타납니다
문제 링크 : https://www.acmicpc.net/problem/2589이 문제는 bfs를 이용하여 풀 수 있습니다. 처음에 이 문제를 풀기 위해 첫 번째 보물의 위치와 두 번째 보물의 위치 모두 반복문으로 탐색해서 풀었는데 4중 for문 내에 bfs
문제 링크 : https://www.acmicpc.net/problem/2606이 문제는 연결 리스트와 dfs를 이용하여 풀 수 있습니다. 연결 리스트란 노드를 저장할 때 그 다음 순서의 자료가 있는 위치를 데이터에 포함시키는 방식으로 자료를 저장하는 자료 구
문제 링크 : https://www.acmicpc.net/problem/1256이 문제는 dp를 이용하여 풀 수 있습니다. 이 문제의 경우 크게 2가지 부분에서 아이디어가 필요합니다.dp 점화식은 어떻게 세울 것인가dp 점화식과 문자열과의 상관관계는 어떤 식으
문제 링크 : https://www.acmicpc.net/problem/2607이 문제는 문제의 조건을 차근차근 구현해나가면 됩니다. 이 문제의 핵심 풀이법은 비슷한 단어를 어떻게 구별하느냐입니다. 이는 다음의 3가지 방법으로 요약할 수 있습니다.기준값보다 길
문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/150370이 문제는 프로그래머스에서 푼 문제입니다.이 문제는 문제에서 요구하는 조건을 잘 읽어보고 하나씩 구현해나가면 됩니다. 저같은 경우는
https://school.programmers.co.kr/learn/courses/30/lessons/150369이 문제는 프로그래머스에서 푼 문제입니다.이 문제는 그리디 알고리즘과 스택을 이용하여 풀 수 있습니다. 그리디 알고리즘이란 각 단계에서 가장 최선
문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/150368이 문제는 프로그래머스에서 푼 문제입니다.이 문제는 중복 순열을 이용한 완전 탐색방법으로 풀 수 있습니다. 이 문제는 언뜻 봤을 때
문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/150367이 문제는 프로그래머스에서 푼 문제입니다.이 문제는 문제의 조건을 재귀함수를 이용하여 탐색하여 풀 수 있습니다. 문제에서 구현해야
문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/150366이 문제는 프로그래머스에서 푼 문제입니다.이 문제는 주어진 조건을 하나하나 구현해나가면 풀 수 있습니다. 문제에서 주어진 제약 조건
문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/150365이 문제는 프로그래머스에서 푼 문제입니다.이 문제는 bfs를 이용하여 풀 수 있습니다. 하지만 한 가지 주의할 점이 있는데, 바로
문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/150364이 문제는 프로그래머스에서 푼 문제입니다.이 문제를 완전탐색으로 풀게 된다면 시간 초과가 발생하기 떄문에 효율적인 방법으로 체크해야
문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/118666이 문제는 프로그래머스에서 푼 문제입니다.이 문제는 문제 조건을 구현하면 쉽게 풀 수 있습니다. 주어진 조건의 제약조건이 굉장히 작
문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/118667이 문제는 프로그래머스에서 푼 문제입니다.이 문제는 큐를 이용하여 문제 조건을 하나하나 구현하면 풀 수 있습니다. 전체적인 로직은
문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/118669이 문제는 프로그래머스에서 푼 문제입니다.이 문제는 우선순위 큐와 Hash 클래스들을 이용하여 풀 수 있습니다. 이 문제는 복잡해보
문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/118668이 문제는 프로그래머스에서 푼 문제입니다.이 문제는 dp를 이용하여 문제를 풀 수 있습니다. 완전 탐색으로 문제를 접근하게 될 경우
문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/118670이 문제는 프로그래머스에서 푼 문제입니다.이 문제는 deque 자료구조를 이용하여 풀 수 있습니다. 이 문제는 일반적인 방법으로 완
문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/92334이 문제는 프로그래머스에서 푼 문제입니다.이 문제는 HashMap을 이용하여 풀 수 있습니다. 신고를 한 사람과 신고를 당한 사람의
문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/92335이 문제는 프로그래머스에서 푼 문제입니다.이 문제는 소수를 구하는 알고리즘과 진수를 구하는 방법에 대해 알고 있다면 쉽게 풀 수 있습
문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/92341이 문제는 프로그래머스에서 푼 문제입니다.이 문제는 문제에서 주어진 조건을 하나하나 구현해나가면 풀 수 있습니다. 우선 이 문제는 번
문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/92342이 문제는 백트래킹을 이용해서 풀 수 있습니다. 문제에서 반복을 진행하는 배열의 크기가 11이기 때문에 모든 조건을 하나씩 탐색해도
문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/92343?language=java이 문제는 백트래킹을 이용하여 문제를 풀 수 있습니다. 주어진 제한 조건이 17로 작은 편이기 때문에 백트래
문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/92344이 문제는 누적합을 이용해서 풀 수 있습니다. 이 문제의 경우 단순 완전 탐색 방식으로 풀게 된다면 최대 1000X1000X25000
문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/92345이 문제는 백트래킹을 이용하여 풀 수 있습니다. 문제의 제한 조건이 5 이하로 굉장히 작기 때문에 백트래킹을 이용한 완전탐색방식으로
문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/81301이 문제는 HashMap을 이용하여 풀 수 있습니다. 문제에서 주어진 표를 {문자 : 숫자} 형태로 HashMap에 저장합니다. 이후
문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/81302이 문제는 bfs를 이용하여 풀 수 있습니다. 문제의 제한 조건이 5X5 행렬 내에서 거리 2 이하만 체크하면 되므로 모든 P에 대해
문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/81303이 문제는 스택을 이용하여 풀 수 있습니다. 이 문제는 데이터가 삭제되었는지 아닌지만 체크해서 보여주면 됩니다. 따라서 삭제 시 스택
문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/81304이 문제는 다익스트라 알고리즘과 비트마스크 기법을 이용하여 풀 수 있습니다. 다익스트라 알고리즘은 최단 경로 탐색 알고리즘으로 특정한
문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/81305이 문제는 이진 탐색과 dfs를 이용하여 풀 수 있습니다. 우선 문제에서 요구하는 "최소화된 최대 그룹의 인원"을 이진 탐색을 이용하
문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/72410이 문제는 문제에서 주어진 조건을 하나하나 구현해가면 됩니다. 조건이 7단계까지 진행되기 때문에 꼼꼼하게 누락되거나 잘못 적은 부분이
문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/72411이 문제는 조합과 우선 순위 큐를 사용하여 풀 수 있습니다. 문제에서 요구하는 메뉴들은 orders의 문자열 중 course 개수만큼
문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/72412이 문제는 HashMap과 이진 탐색을 이용하여 풀 수 있습니다. 문제에서 주어진 info값을 하나의 문자열로 만들어 키로 Map에
문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/72413이 문제는 플로이드 와샬 알고리즘을 이용하여 풀 수 있습니다. 플로이드 와샬 알고리즘은 그래프에서 가능한 모든 노드 쌍에 대해 최단
문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/72414이 문제는 문제의 조건을 어떤 식으로 구현할 것인지를 떠올리면 풀 수 있습니다. 우선 시간:분:초의 형태를 계산하기 편하게 초 단위로
문제 링크 : https://www.acmicpc.net/problem/1744이 문제는 그리디 알고리즘과 우선순위 큐를 사용하여 풀 수 있습니다. 이 문제는 양수일 경우와 음수일 경우 묶는 방법이 다르게 됩니다.양수일 경우 : 절댓값이 큰 수들 순서대로 묶어
문제 링크 : https://www.acmicpc.net/problem/10597이 문제는 백트래킹을 이용하여 풀 수 있습니다. 문제에서 주어진 조건이 최대 50개의 수로 이루어진 순열이므로 조건의 제한 범위가 작아 백트래킹으로 충분히 진행 가능하고, 문자열을
문제 링크 : https://www.acmicpc.net/problem/2840이 문제는 문제의 조건을 구현하는 구현 문제입니다. 문제에서는 원판이 돌아가고 바늘이 고정되어 있는데 배열에서 이를 편하게 사용하기 위해 바늘을 움직이고 원판을 고정하는 방식으로 진
문제 링크 : https://www.acmicpc.net/problem/2206이 문제는 bfs와 dp(메모리제이션)을 이용해서 풀 수 있습니다.사실 문제를 처음 접한 후 백트래킹을 이용하여 벽을 부수며 직접 이동하는 방식을 생각했습니다. 하지만 이 경우 최악
문제 링크 : https://www.acmicpc.net/problem/3015이 문제는 오큰수 문제(https://velog.io/@gale4739/%EB%B0%B1%EC%A4%80-17298-%EC%98%A4%ED%81%B0%EC%88%98Java
문제 링크 : https://www.acmicpc.net/problem/1059 이 문제는 스택과 우선 순위 큐를 이용하여 풀 수 있습니다.
문제 링크 : https://www.acmicpc.net/problem/3101이 문제는 주어진 격자의 규칙을 파악하면 풀 수 있는 문제입니다.처음 이 문제를 이중 ArrayList를 이용하여 대각선 별로 데이터를 채워 넣는 방식으로 접근했으나 N이 10만 가
문제 링크 : https://www.acmicpc.net/problem/5582이 문제는 dp를 이용하여 풀 수 있습니다. 공통 부분 문자열의 특징을 잘 생각해보면 두 문자열 str1과 str2가 있다고 했을 때 str1의 i번까지의 부분 문자와 str2의 j
문제 링크 : https://www.acmicpc.net/problem/1339이 문제는 그리디 알고리즘을 이용하여 풀 수 있습니다. 가장 처음 이 문제를 풀 때 HashMap에 각 알파벳 별 최대의 자릿수를 저장한 후 이 순서대로 9부터 숫자를 배치하는 방식
문제 링크 : https://www.acmicpc.net/problem/1405이 문제는 dfs를 이용하여 풀 수 있습니다. 확률을 계산하는 문제라 접근하기 어려웠는데 확률의 속성을 알면 문제를 풀 수 있습니다.하나의 단순한 경로로 이동했을 때의 확률은 로봇이
문제 링크 : https://www.acmicpc.net/problem/15684이 문제는 백트래킹을 이용하여 풀 수 있습니다. 이 문제는 문제 특성상 일반 백트래킹과 살짝 다른 방식으로 접근합니다. 주어진 문제에서 가로선의 개수가 모든 가로선의 개수가 아니라
문제 링크 : https://www.acmicpc.net/problem/5214이 문제는 bfs를 이용하여 풀 수 있습니다. 처음 백트래킹을 이용해서 문제를 접근하려고 하였으나 인접 리스트를 이용해서 그래프를 생성할 때 시간 초과가 발생하기 때문에 다른 방법을
문제 링크 : https://www.acmicpc.net/problem/1799이 문제는 백트래킹을 이용하여 풀 수 있습니다. 처음 이 문제를 봤을 때 비숍의 특징을 이용해서 왼쪽 아래 방향으로 이동할 경우 y+x 값이 같은 칸은 비숍을 둘 수 없고 오른쪽 아
문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/181188이 문제는 문제의 조건을 구현하면 풀 수 있습니다. 문제의 조건이 바로 떠오르지 않아 어렵게 느껴질 수 있는데 미사일의 위치를 기준
문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/181187이 문제는 원의 방정식을 이용하면 풀 수 있습니다.원의 방정식은 x^2 + y^2 = r^2입니다. 이 때 원의 방정식에서 특정 x
문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/178870이 문제는 투 포인터 알고리즘을 이용하여 풀 수 있습니다. 투 포인터 알고리즘이란 배열이나 리스트와 같은 선형 자료 구조에서 두 개
문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/172927이 문제는 백트래킹을 이용하여 풀 수 있습니다. 주어진 minerals의 길이가 최대 50이고 곡괭이는 총 3종류, 그리고 하나의
문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/169199이 문제는 bfs를 이용하여 풀 수 있습니다. 처음 문제 이해를 잘못해서 G에서 멈추는 것이라고 생각했는데 "무조건 장애물이나 맵
문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/176962이 문제는 우선 순위 큐와 스택을 이용하여 문제 조건을 하나하나 구현해나가면 풀 수 있습니다. 이 문제의 조건이 굉장히 복잡하기 때
문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/169198이 문제는 선대칭을 이용하여 문제를 풀 수 있습니다. 이 문제의 핵심은 쿠션에 맞고 나온 당구공의 위치를 파악하는 것입니다. 당구공
문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/160585이 문제는 문제의 조건을 꼼꼼하게 구현하면 풀 수 있습니다. 이 문제의 가장 어려운 부분은 반례를 찾는 부분입니다. 주의해야 할 부
문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/154539?language=java이 문제는 스택을 이용하여 풀 수 있습니다. 사실 이 문제는 백준의 오큰수 문제(https://v
문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/136798?language=java이 문제는 약수를 구하는 알고리즘을 이용하여 풀 수 있습니다. 아래의 코드처럼 현재 수를 기준으로 모든 수
문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/12921이 문제는 에라토스테네스의 체 방식으로 풀 수 있습니다. 우선 에라토스테네스의 체에 대해 알아보겠습니다.에라토스테네스의 체란 소수를
안녕하세요 이번 시간에는 코딩테스트 문제 중 스택을 이용하여 푸는 문제들의 유형을 분석해보고 왜 스택을 사용하는지에 대해서 알아보는 시간을 갖도록 하겠습니다.우선 첫 번째 유형은 쌍을 이루는 요소들을 찾는 문제입니다. 스택은 LIFO 특성을 가지고 있기 때문에 가장 최
안녕하세요 이번 시간에는 우선 순위 큐 문제 유형을 확인하며 어떻게 적용시켜야 하는지에 대해 포스팅해보도록 하겠습니다.우선 첫 번째 유형은 정렬을 사용해야 하지만 배열이나 리스트를 사용하면 안되는 문제입니다. 주로 배열이나 리스트를 정렬했을 경우 시간 초과가 발생하고
안녕하세요 이번 시간에는 덱(Deque)을 이용한 코딩테스트 문제의 유형을 분석해보도록 하겠습니다. 덱의 경우 주로 출제되는 유형은 하나로 요약할 수 있습니다. 바로 순환하는 사이클을 가지는 문제입니다. 덱의 특성상 맨 앞과 맨 뒤에서 데이터를 참조할 수 있기 때문에
안녕하세요 오늘은 셋과 맵의 문제 유형을 분석해보는 시간을 갖도록 하겠습니다.우선 셋을 사용한 문제는 보통 두 집합의 비교를 필요로 하는 문제에서 사용됩니다. 셋의 특성 상 중복을 허용하지 않고 값을 저장하기 때문에 첫 번째 집합을 만족시키는 원소들을 셋에 추가하고 두
안녕하세요 오늘은 DFS의 문제 유형을 분석해보는 시간을 갖도록 하겠습니다.첫 번째 유형은 그룹 또는 묶음의 수를 구하는 문제입니다. 이 문제 유형은 세부적으로 두 가지로 나뉩니다. 첫 번째는 인접 행렬(ex map)을 주고 내부에서 그룹핑한 그룹의 수를 구하는 문제,
안녕하세요 이번 시간에는 BFS의 문제 유형을 분석해보는 시간을 갖도록 하겠습니다.첫 번째 유형은 시작점부터 도착점까지의 최단 거리 혹은 최소 시간을 구하는 문제입니다. BFS 특성 상 큐에 들어가 있는 원소들이 카운트 순서대로 이동하기 때문에 도착값을 가장 먼저 가지
안녕하세요 오늘은 백트래킹 문제 유형에 대해 분석해보는 시간을 갖도록 하겠습니다.첫 번째 유형은 탐색 중 특정 횟수만큼 특정 조건을 만족하는 경우를 포함하는 경우입니다. 주로 dfs 또는 bfs 탐색 유형과 유사하나 탐색 과정 중 추가 조건을 필요로 하는 문제입니다.
안녕하세요 오늘은 이진 탐색(이분 탐색) 문제 유형을 분석해보는 시간을 갖도록 하겠습니다.첫 번째 유형은 정렬이 가능한 집합 안에서 완전 탐색보다 빠르게 탐색을 필요로 하는 문제입니다. 이진 탐색 특성 상 정렬이 되어 있는 집합 내에서만 적용되기 때문에 정렬되지 않은
안녕하세요 오늘은 bfs를 사용할 때 주의해야 할 점에 대해서 말씀드리겠습니다.결론부터 말씀드리자면 bfs는 체크를 한 이후에 큐에 넣는 것이 더 좋다입니다. DFS의 경우 재귀 함수 호출 시 체크해도 체크 이전과 체크 이후 간의 간극이 짧습니다. 하지만 BFS의 경우
안녕하세요 오늘은 그리디 문제의 유형에 대해 분석해보는 시간을 갖도록 하겠습니다.그리디 유형은 규칙성이 존재하는 집합에서의 최대 최솟값을 구하는 문제로 정의할 수 있습니다. 그리디 특성 상 단순한 규칙이 문제 전체를 관통하기 때문에 이 규칙을 구현하여 문제를 쉽게 풀
안녕하세요 이번 시간에는 DP 문제의 유형을 분석해보는 시간을 갖도록 하겠습니다. DP 문제는 공통적으로 문제의 패턴을 더 작은 공통적인 패턴으로 나눌 수 있어야 하며 패턴들이 반복된다는 특징이 있습니다.첫 번째 유형은 특정 수열의 N항을 구하는 문제입니다. 실제 수열
안녕하세요 이번 시간에는 저번 시간에 이어 DP의 두 번째 유형에 대해 알아보는 시간을 갖도록 하겠습니다.DP 문제의 두 번째 문제 유형은 특정 조건을 만족하는 수열의 항 중 최대 혹은 최솟값을 구하는 문제입니다. 사실상 DP 문제의 가장 많은 출제 유형 중 하나로 주
안녕하세요 이번 시간에는 저번 시간에 이어서 DP 문제의 유형 분석을 해보도록 하겠습니다.세 번째 유형은 특정 조건을 만족하는 수열의 개수(경우의 수)를 구하는 문제입니다. 이 문제의 경우 최대 최소를 구하는 문제와 더불어 DP에서 가장 많이 나오는 유형 중 하나로 이
안녕하세요 이번 시간에는 누적합 문제의 유형을 분석해보도록 하겠습니다.누적합은 합 배열을 이용하여 시간 복잡도를 줄여야 하는 문제에서 사용됩니다. 1차원 누적합의 경우 Si = Si-1 + Ai로 정의할 수 있으며 i에서 j까지의 합은 Sj - Si-1과 같이 정의할
안녕하세요 이번 시간에는 투 포인터 문제 유형에 대해 분석해보는 시간을 갖도록 하겠습니다. 투 포인터 문제는 O(n) 탐색을 더 빠르게 수행할 때 주로 사용되며 맵의 원소 중 몇 개의 원소를 합쳐서 특정 값이 되는 경우의 수를 구하는 문제에서 자주 사용됩니다.백준 20
안녕하세요 오늘은 슬라이드 윈도우 문제에 대해 분석해보는 시간을 갖도록 하겠습니다.슬라이딩 윈도우란 2개의 포인터로 범위를 지정한 다음 범위를 유지한 채로 이동하며 문제를 해결하는 방식입니다. 투 포인터와 유사하나 포인터가 가리키는 범위가 고정되어 탐색한다는 차이점이
안녕하세요 이번 시간에는 코딩 테스트에서 사용되는 여러 정렬 알고리즘에 대해 알아보도록 하겠습니다.정렬 알고리즘은 크게 단순하지만 비효율적인 방법(버블 정렬, 선택 정렬, 삽입 정렬)과 복잡하지만 효율적인 방법(퀵 정렬, 병합 정렬, 기수 정렬, 힙 정렬)로 나뉘어집니
안녕하세요 이번 시간에는 유니온 파인드 문제에 대해 분석해보는 시간을 갖도록 하겠습니다.유니온 파인드란 여러 노드가 있을 때 특정 2개의 노드를 연결해 1개의 집합으로 묶는 union 연산과 두 노드가 같은 집합에 속해 있는지를 확인하는 find 연산으로 구성되어 있는
안녕하세요 이번 시간에는 위상 정렬 문제를 분석해보는 시간을 갖도록 하겠습니다. 먼저 위상 정렬이란, 사이클이 없는 방향 그래프에서 노드 순서를 찾는 알고리즘입니다. 순서가 정해져 있는 작업을 차례로 수행해야 할 때 그 순서를 결정해주기 위해 사용되며 사이클이 없어야
안녕하세요 이번 시간에는 다익스트라 알고리즘에 대해 알아보는 시간을 갖도록 하겠습니다. 다익스트라란 출발 노드와 모든 노드 간의 최단 거리를 탐색할 때 사용하는 알고리즘입니다. 시간 복잡도는 O(간선 수 Log(노드 수))이며 간선의 값은 모두 양수여야 합니다.다익스트
안녕하세요 이번 시간에는 벨만-포드 알고리즘에 대해 알아보는 시간을 갖도록 하겠습니다.벨만-포드 알고리즘이란 그래프에서 최단 거리를 구하는 알고리즘으로 특정 출발 노드에서 다른 모든 노드까지의 최단 경로를 탐색하는 알고리즘입니다. 다익스트라 알고리즘과 유사한 특징을 띠
안녕하세요 오늘은 플로이드-워셜 알고리즘에 대해 알아보도록 하겠습니다. 플로이드-워셜 알고리즘은 그래프에서 최단 거리를 구하는 알고리즘으로 O(노드 수^3)의 시간 복잡도를 가집니다. 또한 벨만-포드 알고리즘과 유사하게 음수 가중치 간선이 있어도 수행이 가능합니다. 하
안녕하세요 이번 시간에는 최소 신장 트리에 대해 알아보는 시간을 갖도록 하겠습니다.최소 신장 트리란 그래프에서 모든 노드를 연결할 때 사용된 간선들의 가중치의 합을 최소로 하는 트리입니다. 여기서 포인트는 모든 노드를 연결할 때의 가중치의 합을 구하는데 사용된다는 점입
문제 링크 : https://www.acmicpc.net/problem/20040이 문제는 유니온 파인드를 이용하여 풀 수 있습니다. 유니온 파인드 알고리즘 특성상 사이클 유무를 파악할 수 있기 때문에 유니온 파인드로 각 노드들을 병합하여 사이클이 완성될 때의
문제 링크 : https://www.acmicpc.net/problem/2623이 문제는 위상 정렬을 이용해서 풀 수 있습니다. 각 보조 PD들이 준 명단끼리 순서가 존재할 때 전체 순서를 구해야 하고 사이클이 존재하지 않기 때문에 위상 정렬을 사용할 수 있습
문제 링크 : https://www.acmicpc.net/problem/1261이 문제는 다익스트라 알고리즘을 이용하여 풀 수 있습니다. 문제를 읽었을 때 벽을 부수는 방식을 카운트하여 BFS 등으로 풀 수도 있겠지만 벽을 부수는 경우 가중치를 1로, 벽을 부
문제 링크 : https://www.acmicpc.net/problem/1865이 문제는 벨만 포드 알고리즘을 이용하여 풀 수 있습니다. 문제에서 구하고자 하는 사이클은 음수 사이클을 판별하는 문제이기 때문에 벨만 포드 알고리즘을 사용합니다. 하지만 여기서 주
문제 링크 : https://www.acmicpc.net/problem/10159이 문제는 플로이드 워셜 알고리즘을 이용하여 풀 수 있습니다. 각 물건에 대한 비교 결과를 알 수 없는 물건의 개수를 출력하는 문제이기 때문에 모든 노드에서의 최단 경로 배열을 구
문제 링크 : https://www.acmicpc.net/problem/1922이 문제는 최소 신장 트리를 이용하여 풀 수 있습니다. 모든 노드의 연결 비용을 최소로 하기 위한 문제의 경우 최소 신장 트리를 이용하여 풀 수 있기 때문에 우선순위 큐를 이용하여
안녕하세요 이번 시간에는 트리에 대해 알아보는 시간을 갖도록 하겠습니다.트리란 노드와 간선으로 연결된 그래프의 특수한 형태입니다. 사이클을 가지고 있지 않으며 1개의 루트 노드가 존재합니다. 이 때 루트 노드를 제외한 노드는 단 1개의 부모 노드를 가지며, 트리의 부분
안녕하세요 이번 시간에는 트라이(trie)에 대해 알아보는 시간을 갖도록 하겠습니다.트라이란 문자열 검색을 빠르게 실행할 수 있도록 설계한 트리 형태의 자료 구조입니다. 단어들을 사전의 형태로 생성한 후 트리의 부모 자식 노드 관계를 이용하여 검색을 수행합니다.트라이를
안녕하세요 이번 시간에는 이진 트리에 대해 알아보는 시간을 갖도록 하겠습니다.이진 트리란 각 노드의 자식 노드(차수)의 개수가 2 이하로 구성되어 있는 트리입니다. 이진 트리는 크게 3가지 종류가 존재합니다.먼저 편향 이진 트리란 노드들이 한 쪽으로 편향되어 생성된 이
안녕하세요 이번 시간에는 세그먼트 트리에 대해 알아보는 시간을 갖도록 하겠습니다.세그먼트 트리란 주어진 데이터들의 구간합과 데이터 업데이트를 빠르게 수행하기 위해 고안해낸 자료구조입니다. 세그먼트 트리는 크게 3단계로 구현할 수 있습니다.트리 크기 구하기 : 리프 노드
안녕하세요 이번 시간에는 최소 공통 조상(LCA)에 대해 알아보는 시간을 갖도록 하겠습니다.최소 공통 조상이란 트리에서 임의의 두 노드를 선택했을 때 두 노드가 각각 자신을 포함해 거슬러 올라가면서 부모 노드를 탐색할 때 처음 공통으로 만나게 되는 부모 노드입니다.최소
안녕하세요 이번 시간에는 소수 구하기 알고리즘에 대해 알아보는 시간을 갖도록 하겠습니다.소수를 빠르게 구하는 알고리즘은 에라토스테네스의 체입니다. 에라토스테네스의 체는 다음의 방식으로 동작합니다.구하고자 하는 소수의 범위만큼 1차원 배열을 생성2부터 시작하며 현재 숫자
안녕하세요 오늘은 오일러 피 함수에 대해 포스팅해보겠습니다. 오일러 피 함수 PN이란 1부터 N까지 범위에서 N과 서로소인 자연수의 개수를 구하는 함수입니다. 오일러 피 함수는 에라토스테네스의 체에서 배수를 지우는 부분만 Pi = Pi - Pi/K로 치환하는 방식으로
안녕하세요 이번 시간에는 유클리드 호제법에 대해 포스팅해보겠습니다.유클리드 호제법이란 두 수의 최대공약수를 구하는 알고리즘입니다. 유클리드 호제법은 다음의 과정으로 동작합니다.큰 수를 작은 수로 나누는 나머지 연산 수행앞 단계에서의 작은 수와 나머지 연산 결과값으로 다
안녕하세요 이번 시간에는 순열과 조합에 대해 알아보는 시간을 갖도록 하겠습니다.n개의 수 중 r개를 뽑는 순열과 조합은 수학적으로 다음과 같습니다.순열 nPr = n!/(n-r)!조합 nCr = n!/((n-r)! x r!)순열을 구현하는 방법을 백준 1722(순열의
안녕하세요 이번 시간에는 CCW에 대해 알아보며 문제 유형을 분석하는 시간을 갖도록 하겠습니다.먼저 CCW란 평명 상의 3개의 점과 관련된 점들의 위치 관계를 판단하는 알고리즘입니다. 세 점 (x1, y1), (x2, y2),(x3, y3)가 주어질 때 CCW는 다음과
문제 링크 : https://www.acmicpc.net/problem/1806이 문제는 투 포인터를 이용하여 풀 수 있습니다. 연속된 수의 부분합 중 가장 짧은 길이를 구하는 문제이기 때문에 입력 배열을 정렬하지 않으며 탐색합니다. 부분합 중 가장 짧은 길이
문제 링크 : https://www.acmicpc.net/problem/11000이 문제는 그리디 알고리즘과 우선순위 큐를 이용하여 풀 수 있습니다.최소의 강의실을 사용해서 모든 수업을 가능하게 하려면 가장 빨리 종료하는 강의와 비교해서 종료 시간이 새로운 강
문제 링크 : https://www.acmicpc.net/problem/2023이 문제는 dfs를 이용하여 풀 수 있습니다. 이 문제는 수의 자리수가 매우 크기 때문에 에라토스테네스의 체 방식으로 소수를 구한 후 해당 범위를 체크하면 시간 초과 및 메모리 초과
문제 링크 : https://www.acmicpc.net/problem/13023이 문제는 dfs를 이용하여 풀 수 있습니다. 문제를 주의깊게 읽어보면 친구 관계를 가진 사람이 5명만 존재하면 된다는 것을 알 수 있습니다. 따라서 dfs로 깊이가 5가 되었을
문제 링크 : https://www.acmicpc.net/problem/1167이 문제는 bfs와 트리의 성질을 이용하여 풀 수 있습니다. 트리는 오직 하나의 부모만을 가지며 순환 사이클이 없기 때문에 임의의 노드에서 bfs를 이용하여 가장 먼 거리의 노드를
문제 링크 : https://www.acmicpc.net/problem/9935이 문제는 스택을 이용하여 풀 수 있습니다. 만약 스택을 사용하지 않고 일반적인 구현 방식으로 풀게 된다면 시간 초과 혹은 메모리 초과가 발생합니다. 따라서 스택에 문자를 하나씩 추
문제 링크 : https://www.acmicpc.net/problem/3020이 문제는 이진 탐색 또는 누적합을 이용하여 풀 수 있습니다.먼저 이진 탐색을 이용하여 푸는 방법을 알아보겠습니다. 만약 완전 탐색으로 진행한다면 다음의 과정을 진행합니다.위와 아래
문제 링크 : https://www.acmicpc.net/problem/2143이 문제는 누적합과 투 포인터로 풀 수 있습니다.이 문제의 풀이 방법은 모든 누적합 가짓수를 뽑은 후 정렬하여 값을 T와 같게끔 조정하는 것입니다.각 배열 별 모든 누적합을 구하는
문제 링크 : https://www.acmicpc.net/problem/15961이 문제는 슬라이딩 윈도우를 이용하여 풀 수 있습니다. 초밥 가짓수의 최댓값은 연속해서 먹는 접시의 개수에 쿠폰을 더한 값, 즉 k+1이 됩니다. 따라서 k개의 원소를 고정하여 탐
문제 링크 : https://www.acmicpc.net/problem/2504이 문제는 스택을 이용하여 풀 수 있습니다. 올바른 괄호열을 구하기 위해 ( 와 \[ 문자는 스택에 추가하고, ) 와 ] 문자의 경우 스택에서 pop하는 방식으로 구현합니다. 이 때
문제 링크 : https://www.acmicpc.net/problem/1202이 문제는 우선순위 큐를 이용하여 풀 수 있습니다. 이 문제의 핵심은 보석을 기준으로 가방을 탐색할 것인가, 가방을 기준으로 보석을 탐색할 것인가를 정하는 것입니다. 가방의 최대 무
문제 링크 : https://www.acmicpc.net/problem/4195이 문제는 유니온 파인드를 이용하여 풀 수 있습니다. 이 문제의 가장 어려운 부분은 문자열을 유니온 파인드로 그룹화하기입니다. 이를 위해 맵을 이용하여 각 문자열을 키로, 유니온 파
문제 링크 : https://www.acmicpc.net/problem/12015이 문제는 이분 탐색을 이용하여 풀 수 있습니다.가장 긴 증가하는 부분 수열을 구하는 방식은 다음과 같습니다.수열 A를 탐색하면서 가장 긴 증가하는 부분 수열이 비었을 경우 수열
문제 링크 : https://www.acmicpc.net/problem/1939이 문제는 이분 탐색과 bfs를 이용하여 풀 수 있습니다.문제를 푸는 방식은 다음과 같습니다.0부터 충분히 큰 수 사이의 무게를 선택한다.해당 무게를 적재한 후 시작점부터 도착점까지
문제 링크 : https://www.acmicpc.net/problem/10775이 문제는 그리디 알고리즘과 유니온 파인드를 이용하여 풀 수 있습니다.우선 들어오는 비행기의 숫자값이 클수록 가장 뒤의 게이트부터 앞쪽 순서대로 채워넣는 방식으로 비행기를 할당할
문제 링크 : https://www.acmicpc.net/problem/17142이 문제는 bfs와 백트래킹을 이용하여 풀 수 있습니다.우선 바이러스가 활성화될 수 있는 여러 위치들 중 M개만 활성화시켜야 하기 때문에 백트래킹을 이용하여 M개를 선택합니다. 그
문제 링크 : https://www.acmicpc.net/problem/2014이 문제는 우선순위 큐를 이용하여 풀 수 있습니다. 초기 주어진 소수들을 우선순위 큐에 넣은 후 우선순위 큐에서 하나씩 뽑아 주어진 소수들을 곱한 값을 다시 우선순위 큐에 넣습니다.
문제 링크 : https://www.acmicpc.net/problem/1781이 문제는 그리디 알고리즘과 우선순위 큐를 이용하여 풀 수 있습니다.문제에서 요구하는 최대의 컵라면을 받기 위해선 크게 2가지를 고려해야 합니다.작은 데드라인부터 탐색하면서 현재 데
문제 링크 : https://www.acmicpc.net/problem/16562이 문제는 유니온 파인드를 이용하여 풀 수 있습니다.친구의 친구는 친구다 라는 명제를 이용하여 친구 관계를 하나의 그룹으로 유니온 파인드를 이용하여 묶어줍니다. 이 때 친구 비용이
문제 링크 : https://www.acmicpc.net/problem/1351이 문제는 재귀함수와 map을 이용하여 풀 수 있습니다.무한수열 특성상 i를 파라미터로 가지는 재귀함수를 반복해서 return A(i/p) + A(i/q)를 이용하면 쉽게 결과를 구
문제 링크 : https://www.acmicpc.net/problem/5639이 문제는 트리를 구현하는 구현 문제입니다.이진 검색 트리를 더 효과적으로 탐색하기 위해 Node 클래스를 생성하여 트리를 구현하였습니다. 각 노드의 왼쪽 및 오른쪽 자리를 할당한
문제 링크 : https://www.acmicpc.net/problem/4256 이 문제는 트리의 성질을 이용하여 풀 수 있습니다. 우선 전위 순회의 경우 루트 노드부터 시작하여 리프 노드까지 탐색합니다. 따라서 가장 먼저 루트 노드가 나오고, 그 다음 인덱스가 루
문제 링크 : https://www.acmicpc.net/problem/2263 이 문제는 트리의 성질을 이용하여 풀 수 있습니다.
문제 링크 : https://www.acmicpc.net/problem/10282 이 문제는 다익스트라 알고리즘을 이용하여 풀 수 있습니다.
문제 링크 : https://www.acmicpc.net/problem/1958이 문제는 dp를 이용하여 풀 수 있습니다.공통 문자를 구하는 방법은 다음과 같습니다.첫 번째 문자의 i번째 문자와 두 번째 문자의 j번째 문자, 세 번째 문자의 k번째 문자가 모두
문제 링크 : https://www.acmicpc.net/problem/3079
문제 링크 : https://www.acmicpc.net/problem/16120이 문제는 스택을 이용하여 풀 수 있습니다. 처음에 백트래킹으로 문자열의 모든 부분을 탐색하는 방식으로 진행했는데 메모리 초과가 발생했습니다. 조금 더 생각해보니 그리디 방식으로
문제 링크 : https://www.acmicpc.net/problem/1593이 문제는 슬라이딩 윈도우 방식을 이용하여 풀 수 있습니다.문제에서 요구하는 내용이 해당 글자의 순서는 상관없이 글자가 존재하기만 한다면 단어로 선택되는 것이기 때문에 해당 글자 범
문제 링크 : https://www.acmicpc.net/problem/2866
문제 링크 : https://www.acmicpc.net/problem/1038 업로드중..
문제 링크 : https://www.acmicpc.net/problem/17299 이 문제는 스택을 이용하여 풀 수 있습니다. https://velog.io/@gale4739/%EB%B0%B1%EC%A4%80-17298-%EC%98%A4%ED%81%B0%EC%88%
문제 링크 : https://www.acmicpc.net/problem/4803이 문제는 유니온 파인드를 이용하여 풀 수 있습니다. 문제에서 구하고자 하는 부분은 트리의 개수를 세는 것입니다. 즉, 유니온 파인드를 이용하여 간선 정보를 통해 노드끼리 연결해준
문제 링크 : https://www.acmicpc.net/problem/13549이 문제는 다익스트라 알고리즘을 사용하여 풀 수 있습니다. 다익스트라 알고리즘 특성상 한 지점에서 모든 경로까지의 최솟값을 O((V + E) log V)의 시간 복잡도로 처리할 수
문제 링크 : https://www.acmicpc.net/problem/1446이 문제는 다익스트라를 이용해서 풀 수 있습니다. 단 일반적인 다익스트라 방식과는 달리 약간의 변형이 필요합니다.이 문제는 모든 경로를 하나씩 밟아가기 때문에 지름길만을 연결한다고
문제 링크 : https://www.acmicpc.net/problem/1761이 문제는 LCA 알고리즘을 이용하여 풀 수 있습니다. 우선 두 노드 쌍을 입력받을 때 두 노드 사이의 거리를 출력하는 방법에 대해 생각해보아야 합니다.두 노드 사이의 거리는 다음과
문제 링크 : https://www.acmicpc.net/problem/1344이 문제는 DP를 이용하여 풀 수 있습니다. 점화식을 생성하기 위해선 규칙을 잘 파악해야 합니다.총 구간은 18개의 구간으로 진행되며, 각각의 구간은 아래의 4가지 경우의 수가 존재
문제 링크 : https://www.acmicpc.net/problem/12865이 문제는 DP를 이용하여 풀 수 있습니다. DP 배열을 다음과 같이 설정합니다.DPN : N번 아이템까지 K 무게만큼 배낭에 넣었을 때 가치의 최댓값이후 점화식을 생성합니다.우선
문제 링크 : https://www.acmicpc.net/problem/1725이 문제는 세그먼트 트리를 이용하여 풀 수 있습니다. 최대 면적의 히스토그램 면적은 범위 내의 가장 작은 높이 x 범위 구간의 길이가 됩니다. 이 때 세그먼트 트리의 특성상 특정 구
문제 링크 : https://www.acmicpc.net/problem/16724이 문제는 유니온 파인드와 dfs를 이용하여 풀 수 있습니다.문제에서 요구하는 SAFE ZONE은 결국 사이클의 개수가 됩니다. 왜냐하면 각 위치에서 사람들이 이동하는 방향은 정해
문제 링크 : https://www.acmicpc.net/problem/1647이 문제는 최소 스패닝 트리를 이용하여 풀 수 있습니다. 마을을 두 개로 나누고 최소의 길을 유지하기 위해서는 다음의 과정을 거칩니다.마을 전체를 최소의 길을 유지한 상태로 길을 제