안녕하세요 ㅋㅋㅋㅋ
여기서 보다니 엄청 반갑습니다!
저도 lis lds두개로 풀어서 알고리즘은 맞는것 같아요.
도와주려고 필사적으로 코드를 들여다봤는데
답이랑 관련 있을까 싶지만
dp, dp2가 -1인 상태로 남아있을 수도 있을 것 같네요
만약 5 4 3 2 1의 경우에는 dp[1] ~dp[5] 모두 1이어야 하지만 dp[2]~dp[5]는 -1인 채로 남아있을 것 같아요.
for(int i=1;i<=n;i++){
ret = max(ret,dp[i]+dp2[i]-1);
}
이부분만 만져주면 될 듯 합니다!
sksdong1 7년 전 1
일단 문제를 제가 해석하기로
자동차 크기가 숫자로 주어졌을 때,
들어오는 순서에 따라 커지는 순에서 작아지는 순으로 나열해야하며, 차를 선택하지 않을수 있다.
각각의 차는 맨앞에 넣거나, 맨뒤에 넣을 수 있다.
이정도 조건이고 제 알고리즘은 어떤 차를 기준으로 앞에 쌓이려면 무게가 커야하고, 뒤에 쌓이려면 무게가 작아야하기 때문에
각각의 차를 기준으로 최장 증가수열, 최장 감소 수열을 구해서
기준 차에대해서 증가수열만큼 앞에 쌓고, 감소 수열만큼 뒤에 쌓아서 가장 긴 값이 답이 될 거라고 생각했는데 60~70%에서 틀리네요
머가 문제일까요?? 아니면 TC좀 알려주세요~