Category: Algorithm
-
(KOR) 자물쇠와 열쇠
Problem – ⭐️⭐️⭐️⭐️ https://programmers.co.kr/learn/courses/30/lessons/60059# Solution Key Points 배열을 확장시켜서 생각하는 것이 키 포인트인 문제. board를 key, lock을 다 수용할 수 있는 크기의 배열로 설정해서 경우의 수를 다 따져보는 게 핵심 배열을 겹칠 때, 각 값을 더해서 아래의 그림과 같이 Lock 배열 부분이 1이 아닌 수가 있는지 없는지만 찾아내면 된다
-
(KOR) 괄호 변환
Problem – ⭐️⭐️ https://programmers.co.kr/learn/courses/30/lessons/60058# Solution Key Points 문제에서 주어진 대로 solve 메소드를 구현하면 풀 수 있었던 문제 재귀함수를 사용할 때, result값을 parameter로 제공하지 않아도 된다
-
(KOR) 문자열 압축
Problem – ⭐️ https://programmers.co.kr/learn/courses/30/lessons/60057 Solution Key Points 브루트포스로 모든 경우의 수를 다 확인해야 했던 문제.
-
(KOR) 가장 긴 증가하는 부분 수열 5
Problem – ⭐️⭐️⭐️⭐️⭐️ https://www.acmicpc.net/problem/14003 Solution Key Points (KOR) 가장 긴 증가하는 부분 수열와 같은 방법으로 풀이하면 시간초과가 발생한다. 이는 해당 풀이가 O(N^2) 의 시간복잡도를 가지고 있기에, 인풋값이 몇만이 되는 경우 시간초과를 리턴하게 된다. 풀이 방법 solve() – 주어진 배열을 순회하면서 새로운 배열에 정렬된 순서로 저장하는 것을 기본으로, 이진 탐색을 이용하여 새로운…
-
(KOR) 가장 긴 증가하는 부분 수열 3
Problem – ⭐️ https://www.acmicpc.net/problem/12738 Solution Key Points (KOR) 가장 긴 증가하는 부분 수열 2 와 풀이 방법 똑같다
-
(KOR) 가장 긴 증가하는 부분 수열 2
Problem – ⭐️⭐️ https://www.acmicpc.net/problem/12015 Solution Key Points (KOR) 가장 큰 증가 부분 수열 와 같은 방법으로 풀이하면 시간초과가 발생한다. 이는 해당 풀이가 O(N^2) 의 시간복잡도를 가지고 있기에, 인풋값이 몇만이 되는 경우 시간초과를 리턴하게 된다. 풀이 방법 주어진 배열을 순회하면서 새로운 배열에 정렬된 순서로 저장하는 것을 기본으로, 이진 탐색을 이용하여 새로운 수가…
-
(KOR) 가장 긴 감소하는 부분 수열
Problem – ⭐️ https://www.acmicpc.net/problem/11722 Solution Key Points (KOR) 가장 큰 증가 부분 수열 의 반대 문제. 풀이 방법은 똑같다.
-
(KOR) 가장 큰 증가 부분 수열
Problem – ⭐️⭐️⭐️ https://www.acmicpc.net/problem/11055 Solution Key Points (KOR) 가장 긴 증가하는 부분 수열 문제와 매우 유사. 단, DP 배열에 들어가는 값들이 이 문제에서는 길이가 아니라 해당 값들의 합이 들어가므로 차이가 존재한다. 풀이 방법 기본적으로 dp 배열에는 본인, 즉 arr[i]의 값이 들어가야한다. 이는 가장 base case일 때, 수열의 길이가 1인 경우 수열의…
-
(KOR) 가장 긴 바이토닉 부분 수열
Problem – ⭐️⭐️⭐️ https://www.acmicpc.net/problem/11054 Solution Key Points (KOR) 가장 긴 증가하는 부분 수열 문제와 매우 유사. 풀이 방법은 거의 똑같다고 보면 된다. 풀이 방법 바이토닉 수열은 문제에 설명되어 있듯이, 특정 수를 기준으로 나눴을 때, 왼쪽 수열은 점점 증가하는 수열, 오른쪽 수열은 점점 감소하는 수열이 된다. 점점 감소하는 수열은 점점 증가하는 수열을…
-
(KOR) 가장 긴 증가하는 부분 수열
Problem – ⭐️⭐️⭐️⭐️⭐️ https://www.acmicpc.net/problem/11053 Solution Key Points LIS(Longest Increasing Subsequence) 문제로, 다이내믹 프로그래밍에서 자주 출제되는 문제 유형이다. 참고: https://www.youtube.com/watch?v=fV-TF4OvZpk&feature=emb_rel_pause Thinking process에 대해 잘 설명해놓은 유튜브 영상 크기가 1(인덱스 0-1)인 배열에 숫자 하나(인덱스 2) 추가되었을 때 dp가 어떻게 변하는지, 크기가 2(인덱스 0-2)인 배열에 숫자 하나(인덱스 3) 추가되었을 때 dp가 어떻게 변하는지,크기가…
