문자열 3

백준 BOJ 5582 공통 부분 문자열

https://www.acmicpc.net/problem/5582 5582번: 공통 부분 문자열 두 문자열이 주어졌을 때, 두 문자열에 모두 포함된 가장 긴 공통 부분 문자열을 찾는 프로그램을 작성하시오. 어떤 문자열 s의 부분 문자열 t란, s에 t가 연속으로 나타나는 것을 말한다. 예를 들 www.acmicpc.net 문제 해설 부분 문자열은 한 문자열에서 연속한 부분을 떼어낸 문자열이다. 주어진 문자열 중 긴 문자열에 더미 문자열을 붙이고 완전탐색 시켰는데 통과했다... 얼떨떨했따... 긴 문자열의 비교 시작 부분을 이동시키며, 작은 문자열의 길이만큼 비교했다. #include #define fio cin.tie(0)->sync_with_stdio(0) using namespace std; int ..

알고리즘/백준 2021.12.29

백준 18241 문자열 게임

https://www.acmicpc.net/problem/18241 18241번: 문자열 게임 첫 번째 줄에 성공한 명령의 개수를, 두 번째 줄에 프로그램을 실행한 후의 문자열 S를 출력한다. 프로그램 실행 후에 문자열이 비어있는 경우는 존재하지 않는다. 세 번째 줄에 프로그램을 실 www.acmicpc.net 3111문제와 크게 다르지않다. (3111 해설 : https://daan.tistory.com/19) 3111이 자동으로 방향을 바꾸며 필요한 문자열을 검색했다면, 해당 문제 18241은 명령(L or R)에 따라 방향을 바꿔 문자열을 검색하는 문제다. 명령의 수가 모자라 단어를 덜 찾은 경우가 있으므로, deque에 남은 문자(char)도 옮겨주는 과정이 필요하다. 위의 3111해설 페이지에서..

알고리즘/백준 2021.12.26

백준 3111 검열

https://www.acmicpc.net/problem/3111 3111번: 검열 첫째 줄에 단어 A가, 둘째 줄에 텍스트 T가 주어진다. A와 T는 알파벳 소문자로만 이루어져 있고, A는 최대 25자, T는 최대 300,000자이다. www.acmicpc.net 문자열 T에서 처음 등장하는 문자열 A, 마지막으로 등장하는 A를 찾아 A가 등장하지 않을 때까지 삭제하는 문제다. 양방향으로 탐색을 해야 하기 때문에 스택이 두 개 필요하다. 시간 초과(틀린 풀이) / 맞는 풀이는 아래에 1. 스택 left, right를 준비하고, 문자열 T를 right에 모두 삽입한다. 2. left right) 2-2. A가 존재하지 않는다면, 과정을 중단한다. 3. 남은 문자열을 출력한다. 시간초과가 나오는 이유 : ..

알고리즘/백준 2021.12.26