0에서부터 더하면서 dp를 채우는 것과, k에서부터 빼면서 dp를 채우는 것은 동일한 시간복잡도를 가집니다.
2293번 - 동전 1
0에서부터 더하면서 dp를 채우는 것과, k에서부터 빼면서 dp를 채우는 것은 동일한 시간복잡도를 가집니다.
확인해주셔서 감사합니다!
time complexity 수준에서 차이가 아니면 통과하도록 시간 제한을 설정했어야 하는 것 아닌 가 생각했었습니다.
말씀하신 것 처럼 dict 자료구조의 사용은 허용하지 않겠다는 의도로 보이네요.
아 글구 아래 통과한 bottom up 코드의 공간복잡도는 O(k)입니다. 시간복잡도는 O(n*k)...
감사합니다~ 다음에 또 물어보겠습니당
로직상으로는 O(k)군요. 그런데 dp = [[0]*(k+1) for _ in range(n)] 라는 문장이 한 번 실행되고 있어서 코드 자체의 공간 복잡도는 O(nk)이긴 합니다...
그리고 dict같은 건 출제자의 의도와는 아무 상관 없을 겁니다. 애초에 파이썬을 염두에 두고 만든 문제는 별로 없습니다. 대부분은 C++만이 기준이고, 파이썬은 BOJ에서 언어마다 일괄적으로 주는 보너스에 의해 풀리는 문제들이 일부 있을 뿐입니다. dict가 보너스를 받고도 제한 내에 못 들어온 건 그저 운이 없었던 거겠죠.
댓글을 작성하려면 로그인해야 합니다.
zlqhem 1년 전
https://www.acmicpc.net/submit...
위에 bottom up 으로 통과는 했는데
처음에 풀땐 top down 으로 하면 시간초과난것도 같이 올렸습니다
top down 구현에 문제가 있어 시간초과였던건지 bottom up 방식과 시간복잡도에서 차이가 있는건지 모르겠습니다. 시간복잡도는 같을거라 생각했는데..