반응형
리뷰
노가다를 통해 점화식을 세우고 오랜시간이 걸려 풀었다..
문제 풀이
- 101길이의 정수형 벡터를 0으로 초기화 한다.
- n 값을 입력 받고 정수형 변수 plus1과 plus2를 각각 1로 초기화 한다.
- 3번 인덱스의 경우 0이 확정이므로 4부터 for문을 돌려준다.
- 현재 값은 이전 인덱스 값에 plus2를 더해준 값이다.
- plus1에 현재 for문의 i에서 2를 뺀 만큼 더해준다.
- plus2에 plus1 만큼 더해준다.
- dp의 n번째 인덱스를 출력해 준다.
참고 사항
n | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
dp[n] | 0 | 1 | 5 | 15 | 35 | 70 | 126 | 210 |
plus1 | 0 | 1 | 4 | 10 | 20 | 35 | 56 | 84 |
plus2 | 0 | 1 | 3 | 6 | 10 | 15 | 21 | 28 |
엄청난 노가다로 위의 식을 도출해 냈다.
문제를 풀고 나서 chatGPT에게 물어보니 식이 존재했다. 대각선이 교차하는 점의 수는 nC4였다.
정답 코드
#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<int> dp(101, 0);
int n, plus1 = 1, plus2 = 1;
cin >> n;
for (int i = 4; i <= 100; i++) {
dp[i] = dp[i - 1] + plus2;
plus1 += i - 2;
plus2 += plus1;
}
cout << dp[n];
}
728x90
반응형
'알고리즘 공부 > C++' 카테고리의 다른 글
백준 10822번 더하기 C++ (0) | 2024.07.21 |
---|---|
백준 10801번 카드게임 C++ (0) | 2024.07.21 |
백준 3059번 등장하지 않는 문자의 합 C++ (0) | 2024.07.21 |
백준 2789번 유학 금지 C++ (0) | 2024.07.21 |
백준 2495번 연속구간 C++ (0) | 2024.07.21 |