본문 바로가기

Algorithm/BOJ211

[BOJ]16916번: 부분 문자열 (c++) www.acmicpc.net/problem/16916 16916번: 부분 문자열 첫째 줄에 문자열 S, 둘째 줄에 문자열 P가 주어진다. 두 문자열은 빈 문자열이 아니며, 길이는 100만을 넘지 않는다. 또, 알파벳 소문자로만 이루어져 있다. www.acmicpc.net KMP 문자열 알고리즘 #include #include using namespace std; // Prefix Index 배열 만들기 vector make_pi(string &pattern) { int len = pattern.size(); vector pi(len); for (int i = 1, j = 0; i 0 && pattern[i] != pattern[j]) { j = pi[j - 1.. 2020. 9. 5.
[BOJ]17406번: 배열 돌리기 4 (c++) www.acmicpc.net/problem/17406 17406번: 배열 돌리기 4 크기가 N×M 크기인 배열 A가 있을때, 배열 A의 값은 각 행에 있는 모든 수의 합 중 최솟값을 의미한다. 배열 A가 아래와 같은 경우 1행의 합은 6, 2행의 합은 4, 3행의 합은 15이다. 따라서, 배열 A의 www.acmicpc.net 구현 + 브루트포스 //https://www.acmicpc.net/problem/17406 #include #include #include #include using namespace std; template using d_vector = vector; // r, c : 회전하는 사각형의 가장 왼쪽 윗칸 struct rtt_info { int r, c, s; }; int get_m.. 2020. 9. 4.
[BOJ]9935번: 문자열 폭발(c++) www.acmicpc.net/problem/9935 9935번: 문자열 폭발 첫째 줄에 문자열이 주어진다. 문자열의 길이는 1보다 크거나 같고, 1,000,000보다 작거나 같다. 둘째 줄에 폭발 문자열이 주어진다. 길이는 1보다 크거나 같고, 36보다 작거나 같다. 두 문자열은 모� www.acmicpc.net deque 사용 #include #include using namespace std; struct b_char { char c; int b_idx; }; string removeBomb(string &str, string &bomb) { string answer; deque dq; // str문자열 탐색 for (char c : str) { /* c가 bomb의 첫번째 or deque의 back.. 2020. 9. 4.
[BOJ]11048번: 이동하기 (c++) www.acmicpc.net/problem/11048 11048번: 이동하기 준규는 N×M 크기의 미로에 갇혀있다. 미로는 1×1크기의 방으로 나누어져 있고, 각 방에는 사탕이 놓여져 있다. 미로의 가장 왼쪽 윗 방은 (1, 1)이고, 가장 오른쪽 아랫 방은 (N, M)이다. 준규는 �� www.acmicpc.net DP #include #include #include using namespace std; int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); // 입력 int N, M; cin >> N >> M; vector max_candy(N + 1, vector(M + 1)); for (int i = 1; i max_candy[i].. 2020. 9. 3.