SSAFY대비_CT_예상문제풀이_이상한음식점

손무현·2022년 9월 23일
0
post-thumbnail

유튜브 ALGORITHM JOBS 채널에서 풀이해준 영상을 통해 배우고 공부한 내용 정리

https://www.youtube.com/watch?v=8OGlq6zKOl0

해당 문제는 LIS(Longest Increasing Subsequence, 최장 증가 부수열(문자열))를 구하여 푸는 문제다.

문제를 읽으면서 LIS를 이용해서 풀어야 된다는 것을 빨리 캐치하는 것이 중요할 것 같다.

해당 문제에서는 염도를 숫자로 나태내는데 이것이 "점점짜게 먹다가 어느 순간 부터 점점 싱겁게 먹으려고 한다." 라는 문장을 통해 순열과 관련된 문제라는 것을 유추할 수 있을 것이다.

"최대 몇 개를 먹을 수 있는지 구하여라" 라는 문장을 통해 가장 많은 (여기서는 한 줄로 쭉 나열되어 있으니 가장 긴) 집합을 찾으라는 것을 알 수 있다.

"짜게 먹다가 어느 순간 부터 점점 싱겁게"를 통해 정방향과 역방향 모두 적용 가능하다는 것을 알 수 있다.

즉, 이 문제는 나열된 수열로 부터 왼쪽으로부터는 증가하는 부분 수열, 오른쪽부터 시작하는 것으로는 감소하는 부분수열, 이 둘을 조합하여 가장 큰 긴 수열을 찾는 것이다.

알고리즘 잡스 강사님께서는 해당 문제를 다음과 같이 수열의 각 원소에 위치마다 정방향과 역방향 LIS 값을 계산한 후 각 위치에서 정방향과 역방향의 LIS 값을 더한 것에 1을 빼기 연산 함으로써 답을 찾는 방법을 알려주셨다.

1번 문제를 풀어보면 다음과 같이 표를 그려 풀 수 있다.

위와 같은 방식으로 나머지 2번 3번도 풀어보면

위와 같은 답이 나온다. (실제 정답과 다를 수 있습니다.)

profile
HUFS BME 18 / [NAVER CONNECT] boostcamp AI Tech 5th

0개의 댓글