코딩테스트/소프티어 [C++] 비밀 메뉴2 - [문제] https://softeer.ai/practice/info.do?idx=1&eid=633 Softeer 연습문제를 담을 Set을 선택해주세요. 취소 확인 softeer.ai [문제 풀이] 조건에서 N과 M이 3000이 안되니 n^2 으로도 시간제한 안에 충분히 풀 수 있었던 문제였기에 LCS 알고리즘을 응용해서 풀었다. N의 배열과 M의 배열을 이중으로 교차시키고 제일 많이 나오는 연속된 숫자를 답으로 체크하였다. * LCS 알고리즘에 관한 설명은 이쪽에 있다. https://yoon-1212.tistory.com/108 [코드] #include<iostream> #include<vector> #include<algorithm> using namespace std; int main(int argc, char** argv) { int n,m,k; cin>>n>>m>>k; vector<int> firstKio(n,0); vector<int> secondKio(m,0); for(int i = 0;i<n;i++){ cin>>firstKio[i]; } for(int i = 0;i<m;i++){ cin>>secondKio[i]; } vector<vector<int> > menu(n + 1,vector<int>(m + 1,0)); int answer = 0; for(int i = 1;i<=n;i++){ for(int j = 1;j<=m;j++){ if(firstKio[i - 1] == secondKio[j - 1]){ menu[i][j] = menu[i-1][j-1] + 1; } answer = max(answer, menu[i][j]); } } cout<<answer<<endl; return 0; } 공유하기 URL 복사카카오톡 공유페이스북 공유엑스 공유 게시글 관리 구독하기Yoon-1212 Contents 당신이 좋아할만한 콘텐츠 [C++] 자동차 테스트 2023.08.25 [C++] 순서대로 방문하기 2023.08.25 댓글 0 + 이전 댓글 더보기