해결된 질문
작성
·
360
0
http://boj.kr/59d6674b61764f13b14b7608522239a5
9개 중에 틀린 2개를 뽑고 인덱스에 해당하는 vector요소를 erase로 지우고자 했는데 프로그램을 돌리면 값을 정확하게 나오는데 왜 틀렸다고 하는지 모르겠습니다
답변 1
0
안녕하세요 세희님 ㅎㅎ
해당 문제지문을 보시면
가능한 정답이 여러 가지인 경우에는 아무거나 출력한다.
라고 되어있습니다.
즉, 정답인 경우의 수가 여러개라는 의미이며 해당 부분에 대한 코드수정이 필요한데요.
if(sum-(arr[i]+arr[j])==100){
//arra[i], arr[j] 지우기
arr.erase(arr.begin()+i);
arr.erase(arr.begin()+j-1);
}
앞의 코드를 보시면 erase를 하는 경우의 수가 여러번 생길 수가 있기 때문에 적절히 break를 걸어주는 부분이 필요합니다.
// 오름차순 정렬
for(int i=0;i<7;i++){
for(int j=i;j<7;j++){
if(arr[i]>arr[j]){
temp=arr[i];
arr[i]=arr[j];
arr[j]=temp;
}
}
}
O(N^2)으로 정렬을 잘하셨는데요. sort함수를 써서 O(NlogN)으로 하시는게 더 좋습니다.
또 질문 있으시면 언제든지 질문 부탁드립니다.
좋은 수강평과 별점 5점은 제게 큰 힘이 됩니다. :)
감사합니다.
강사 큰돌 올림.