본문 바로가기

전체 글270

백준 가장 긴 증가하는 부분 수열 4 14002 문제설명 : 이것은 &#39;역추척&#39;기법이 필요한 문제이다 lcs2 풀기전에 이것을 통해 배우고 lcs2를 풀겠습니다 . 문제 풀이 : 역추적을 할려면 일단 바로전의 위치를 저장할 배열을 만들어줘야한다 ex :b[1001]에 역추척 위치를 저장하겠습니다 1) 디피가 갱신될때 b에도 그 바로 직전의 idx도 넣는다 for(int i = 0 ; i < n; ++i) if(a[i] < a[k] && i < k) { if(dp[k] < 1 + solve(i)) { dp[k] = solve(i) + 1; b[k] = i 에서 b[k] = i에 이 부분이 현재 k번째를 보는데 갱신 되는 i번째를 넣는 것이다. 더 긴 부분들을 차례 차례 들어간다 이것을 이용해서 while문을 이용해서 차례 차례 찾아가면된다 .. 2021. 8. 10.
백준 9251 lcs 문제 설명 : 두 문자열이 있을때 최장 공통 부분수열의 길이를 찾는 것이다. 문제 풀이 : 각각 문자열을 s, t라고 가정한다. dp[i][j] -> Si번째부터 Tj부터 가장긴 부분 수열의 길이 조건 1 : i, j의 범위 제한 2. 기본값 세팅 3. i j가 같을 경우, i, j가 다를 경우 여기서 i,j는 s와 t의 i,j인덱스의 원소 값이다 같으면 + 1하고 i,j를 둘다 다음번째를 보면된다 다르면 둘중에 하나를 +1해서 다음껄 보고 max값을 살피면 된다 if(str1[i][j] == str2[i][j]) dp[i][j] = 1 + solve(i +1, j +1) else { dp[i][j] = max(solve(i +1, j), solve(i, j+1) } 2021. 8. 9.
B. Alphabetical Strings ### 문제 설명 : ; A stringssof lengthnn(1≤n≤261≤n≤26) is calledalphabeticalif it can be obtained using the following algorithm: first, write an empty string toss(i.e. perform the assignmentss := ""); then perform the next stepnntimes; at theii-th step takeii-th lowercase letter of the Latin alphabet and write it either to the left of the stringssor to the right of the stringss(i.e. perform the assig.. 2021. 8. 9.
A. Shortest Path with Obstacle 문제 설명 : There are three cells on an infinite 2-dimensional grid, labeled A, B, and F. Find the length of the shortest path from A to B if: in one move you can go to any of the four adjacent cells sharing a side; visiting the cell F is forbidden (it is an obstacle). 주어진 a, b, f좌표가 있는데 f는 피하면서 가장 짧은 a - > b로의 거리를 찾는 문제였다. 틀린 이유 처음에 가장 짧은이면서 그래프가 나오길래 흥분해서 bfs로 했다. 시간초과가 발생하였다 그 이유는 t가 10^4이고 맵이 1,.. 2021. 8. 9.