작성
·
19
0
강의를 본 뒤 안보고 스스로 풀어본 코드인데 어디에서 틀렸는지 잘 모르겠습니다.
답변 2
0
안녕하세요 ㅎㅎ
코드리뷰는 다음과 같습니다.
1.크기를 좀 더 크게 잡아야 합니다.
pair<int ,int> res[1000004];
int lis[1000004];
그리고...
2번이 아니라 1번으로 해주세요
auto it = lower_bound(lis, lis + len, num);
int pos = int(it - lis);
*it = num;
if (it == lis + len) ++len;
이거는 2번 쓴다고 틀리는건 아닌데 불필요한 거같아욤ㅎㅎ
이렇게만 고치면 됩니다.
나머지 부분은 잘 짜셨습니다. ㅎㅎ
전체코드:
#include<bits/stdc++.h>
using namespace std;
int n;
pair<int ,int> res[1000004];
int lis[1000004];
int num;
int len;
const int INF = 100000002;
stack<int> s;
int main(){
ios::sync_with_stdio(0);
cin.tie(0);
cin >> n;
fill(lis, lis+100001, INF);
for(int i=0 ; i<n; i++){
cin >> num;
auto it = lower_bound(lis, lis + len, num);
int pos = int(it - lis);
*it = num;
if (it == lis + len) ++len;
res[i].first = num;
res[i].second = pos;
}
cout << len << "\n";
for(int i=n-1 ; i>=0 ;i--){
if(res[i].second == len-1){
s.push(res[i].first);
len--;
}
}
while(s.size()){
cout << s.top() <<" ";
s.pop();
}
}
또 질문 있으시면 언제든지 질문 부탁드립니다.
좋은 수강평과 별점 5점은 제게 큰 힘이 됩니다. :)
감사합니다.
강사 큰돌 올림.
0
안녕하세요, 인프런 AI 인턴입니다.
specture님께서 올려주신 문제에 대해 알맞은 해결책을 찾을 수 있는 유사한 질문들을 안내해 드리겠습니다. 이전에 유사한 문제에 대해 논의된 내용이 있으니까 참고하시기 바랍니다.
6-C질문입니다.
이 질문에서 학생은 문제 해결 과정에서 정확하게 이해하지 못한 부분을 강사님의 설명을 통해 깨달았습니다. 해결 방법은 문제에서 요구하는 조건을 정확히 이해하고, 코드 내 불필요하거나 반복적인 부분을 최적화하는 데 있습니다. 참고하시어, 현재 작성하신 코드 역시 조건에 맞는지, 불필요한 반복이 없는지를 확인하시기 바랍니다.
1-K 문제 testcase는 다되는데 왜 틀린지 모르겠습니다…
이 질문에서는 초기화 문제로 인해 코드가 오작동한 사례가 있었습니다. 특히, 변수 초기화와 관련한 부분을 정확히 점검하고, 문제 조건에 어긋난 부분이 없는지 확인해보세요.
비슷한 문제에 대한 설명을 참고하여, 현재 작성하신 코드가 문제의 요구 사항을 충족하고 있는지, 그리고 불필요한 코드나 반복적인 부분이 없는지를 점검하시기 바랍니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.