작성
·
300
0
http://boj.kr/75cc76adfce24cbd88595ea4ea999a5d
안녕하세요 강사님 ㅎㅎ
해당 강의 초반에 무식하게 풀었을 때의 시간복잡도가 (n * n-1 / 2)*n 이라고 설명하시는데 제가 혼자 문제풀 때는 다르게 계산을 했거든요...
저는 연속된 수들의 곱이니까 이중 for문으로
for(int i=0; i<n; i++){
for(int j=i+1; j<n; j++){
식의 연산이 필요하다 생각했고 여기다가 백트래킹으로 == 0일때 break 정도하는 조건까지만 넣었습니다. 이러면 등차수열의 합 정도의 시간복잡도가 되니 O(n^2)이고 n의 최대범위가 10000 -> 제곱은 1억 -> 1억에서 천만까지는 해볼만하다고 알려주셔서 위 생각의 흐름대로 문제를 풀었습니다. 혹시 제가 시간복잡도 계산을 잘못한건가요..?
답변 1
1
안녕하세요 종현님 ㅎㅎ
천재적인 발상이네요..
식의 연산이 필요하다 생각했고 여기다가 백트래킹으로 == 0일때 break 정도하는 조건까지만 넣었습니다. 이러면 등차수열의 합 정도의 시간복잡도가 되니 O(n^2)이고 n의 최대범위가 10000 -> 제곱은 1억 -> 1억에서 천만까지는 해볼만하다고 알려주셔서 위 생각의 흐름대로 문제를 풀었습니다. 혹시 제가 시간복잡도 계산을 잘못한건가요..?
>> 아뇨 시간복잡도 1억 계산 잘하셨습니다. 1억이면 해볼만하긴 하나 크긴 크지만 저렇게 ar[j] == 0일 때 break;건 것도 너무 멋지네요. 잘하셨습니다.
감사합니다.
DP에서 이해가 바로바로 되지 않아서 요즘 고전 중인데 이렇게 칭찬들으니 힘이 나네요 ㅜㅜ 감사합니다 !!