Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- long int 의 차이
- rigidbody.position
- 로블록스 script local script 차이
- 플레이어 이동
- TOPCIT 문제 유형
- 유니티 Rigidbody 이동
- 백준 10844번 c++
- 코드
- transform.position
- 프로그래머스 단체사진 찍기 C++
- 2644번
- 백준 11726번 C++
- 프로그래머스 가장 큰 수 C++
- 1699번
- 차이
- c++
- TOPCIT 후기
- 풀이
- 배열 stack overflow
- rigidbody.Moveposition
- UML Diagram 정리
- 백준
- 백준 17299번 c++
- 백준 10799번 c++
- 유니티
- 유니티 꿀팁
- 백준 2225번 c++
- bfs
- 백준 2193번 c++
- 유니티 LTS
Archives
- Today
- Total
Kiki Devlog
[실2][C++] 백준 1699번 제곱수의 합 (dp) 본문
728x90
식을 어떻게 세워야 할지 고민하다가 세웠는데 시간초과 떴음. 근데 내가 세운것보다 훨씬 간단한 식을 써도 됐다. 시간 초과될 줄 알고 안했었는데 시간복잡도를 조금 더 생각해 볼 걸 싶었다. 그리고 배열에 negative index를 쓰면 0이 나온다. 쓰레기 값이 나올 줄 알았는데 다 0이 나와서 궅이 j를 root 까지 계산해 줄 필요 없이 root자리에 i를 써도 될것같다.
내 코드
#include <iostream>
#include <cmath>
using namespace std;
const int MAX = 100001;
int dp[MAX];
int main() {
int n;
cin >> n;
int root;
for (int i = 1; i <= n; ++i) {
dp[i] = dp[i-1] + 1;
root = sqrt(i);
for (int j = 1; j <= root; ++j) {
dp[i] = min(dp[i], dp[i - j * j] +1 );
}
}
cout << dp[n];
return 0;
}
+ 못풀었다!!.. 그치만 오늘 못풀었으니까 다음엔 풀겠지. 그리고 이제 dp 절대 안까먹을듯
참고
[ 백준 1699 ] 제곱수의 합 (C++) :: 얍문's Coding World.. (tistory.com)
'Coding Test > 백준' 카테고리의 다른 글
[실 3][C++] 백준 2606번 바이러스 (DFS) (0) | 2022.08.30 |
---|---|
[실 5][C++] 백준 17478번 재귀함수가 뭔가요? (0) | 2022.08.15 |
[실3][C++] 백준 11726번 2xn 타일링 (DP) (0) | 2022.06.27 |
[실3][C++] 백준 9095번 1,2,3 더하기 (DP) (0) | 2022.06.26 |
[실3][C++] 백준 2193번 이친수 (DP) (0) | 2022.05.30 |
Comments