ingyo   2년 전

안녕하세요!

제 코드는 기본적으로 뒤에서부터 하나씩더해서 만약 주어진 숫자와 같은 sum이 된다면 loop를 나오는 구조입니다.

뒤에서 부터 더했기때문에 조건에 부합하면 가장 짧은 배열이 저절로 가능합니다.

원래는 j = 주어진숫자(즉 total)로 놓고 풀었으나 시간 초과가 떠서 int  j = total/length+1;로 바꿨는데 이렇게하니까 들어맞지 않는 케이스가 있는것같네요.  그래서 질문이


1) 이렇게 풀면서 오류가 나지않으려면 j를 어떻게 놓아야할지

2) 이것보다 더 효율적인 알고리즘은 어떤걸 사용하면 좋을지

궁금합니다. 감사합니다!!!

zych1751   2년 전

1) j값의 초기값이 너무 작습니다.

간단하게

500 5 의 인풋의 경우를 봐도

98 99 100 101 102가 답이 될 수있는데 이때 j = 101이 되어서 찾지 못합니다.

j 값을 어느정도 크게 잡아야할지 다시 생각해보면 좋을것 같습니다.


2) 수열이 길이를 확정시키고 나서 그 길이의 수열이 만들어 질 수 있는지를 판단할 수 있으면, 그 길이를 L~100까지 돌려보는 방식으로 빠르게 구할 수 있습니다.

댓글을 작성하려면 로그인해야 합니다.