인프런 커뮤니티 질문&답변
벡터 선언할 때 a(n)으로 하면 왜 안되나요??
작성
·
219
0
안녕하세요 강사님. 강의 열심히 수강하고 있습니다.
강의를 보기 전 먼저 풀어봤는데, 변수 이름만 다르고 코드내용은 거의 같은데도 아무것도 출력되지 않고 정상적으로 종료는 됩니다.
코드를 비교해보니 벡터를 선언할 때 v(n)으로 원소 개수를 정해줘서 그런것 같은데, 왜 이렇게 하면 아무것도 출력이 안되는지 알 수 있을까요..?
//#42] 이분검색 (Binary Search)
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int main(){
freopen("input.txt","rt",stdin);
int n, m, start, mid, end, tmp;
scanf("%d %d", &n, &m); //n=8, m=32
vector <int> v(n);
for(int i=0; i<n; i++){
//scanf("%d",&v[i]);
scanf("%d", &tmp);
v.push_back(tmp);
}
sort(v.begin(), v.end());
start=0;
end=n-1;
while(start<=end){
mid=(start+end)/2;
if(v[mid]>m){
end=mid-1;
}else if(v[mid]<m){
start=mid+1;
}else if(v[mid]==m){
printf("%d", mid+1);
return 0;
}
}
return 0;
}퀴즈
57%나 틀려요. 한번 도전해보세요!
선택 정렬(Selection Sort) 알고리즘은 각 단계에서 어떤 작업을 수행하여 배열을 정렬하나요?
인접한 두 요소를 비교하여 필요시 교환합니다.
정렬되지 않은 부분에서 가장 작은(또는 큰) 값을 찾아 정렬된 부분의 올바른 위치로 옮깁니다.
현재 요소를 이미 정렬된 부분 배열의 적절한 위치에 삽입합니다.
배열을 분할하고 각 부분을 재귀적으로 정렬한 후 병합합니다.
답변 1
0
김태원
지식공유자
v(n)으로 하면 0으로 원소가 n개 채워지고 난 후, push_back으로 집어넣는 숫자는 n개의 0뒤로 들어가서 그렇습니다.
while문 돌기전에 for(int x : v) cout<<x<<" "; 출력해보세요.





