<< 문제 >>
https://www.acmicpc.net/problem/11053
각 위치를 마지막으로 하는 수열의 크기를 저장하고,
이어지는 수들이 다 지난 수 중 작은 숫자 중 수열이 최대가 되는 값에 +1을 해주면 됩니다.
말은 좀 어려운데 코드로 보면 이해가 쉽습니다.
<< 코드 >>
#include <iostream>
using namespace std;
int main() {
int num;
cin >> num;
int input[1000];
for (int i = 0; i < num; i++) {
cin >> input[i];
}
// 각 위치를 마지막으로 하는 수열의 크기를 저장
int val[1000] = { 0, };
for (int i = 0; i < num; i++) {
for (int j = 0; j < i; j++) {
if (input[j] < input[i]) { //
if (val[i] <= val[j]) { // 더 큰 수열을 발견했을때만
val[i] = val[j] + 1;
}
}
}
if (val[i] == 0) {
val[i] = 1;
}
}
int max = val[0];
for (int n: val) {
if (n > max) {
max = n;
}
}
cout << max;
}
<< 깃헙 >>
< 백준 BaekJoon : 1992번 쿼드트리 > C++ (0) | 2024.02.02 |
---|---|
< 백준 BaekJoon : 9251번 LCS > C++ (0) | 2024.01.31 |
< 백준 BaekJoon : 2156번 포도주 시식 > C++ (0) | 2024.01.29 |
< 백준 BaekJoon : 10844번 쉬운 계단 수 > C++ (0) | 2024.01.29 |
< 백준 BaekJoon : 1463번 1로 만들기 > C++ (0) | 2024.01.28 |
댓글 영역