해결된 질문
작성
·
313
0
시간초과와 상관없이 다음과 같은 코드를 만들어보았는데 제대로 작동이 안됩니다. 어디가 잘못된 것인가요?
#include<stdio.h>
#include<vector>
using namespace std;
int main(){
freopen("input.txt", "rt", stdin);
int n, m, i, k, cnt=0, tmp;
scanf("%d", &n);
vector<int> a(n);
for(i=0; i<n; i++){
scanf("%d", &a[i]);
}
scanf("%d", &m);
vector<int> b(m);
for(i=0; i<m; i++){
scanf("%d", &b[i]);
}
vector<int> c(n+m);
for(i=0; i<n; i++){
for(k=0; k<m; k++){
if(a[i]==b[k]){
c[i]=a[i];
cnt++;
}
}
}
for(i=0; i<cnt-1; i++){
for(k=i+1; i<cnt; i++){
if(c[i]>c[k]){
int tmp;
tmp=c[i];
c[i]=c[k];
c[k]=tmp;
}
}
}
for(i=0; i<cnt; i++){
printf("%d ", c[i]);
}
return 0;
}
답변 1
1
안녕하세요^^ 아래 첨삭해놓았습니다.
#include<stdio.h>
#include<vector>
using namespace std;
int main(){
freopen("input.txt", "rt", stdin);
int n, m, i, k, cnt=0, tmp;
scanf("%d", &n);
vector<int> a(n);
for(i=0; i<n; i++){
scanf("%d", &a[i]);
}
scanf("%d", &m);
vector<int> b(m);
for(i=0; i<m; i++){
scanf("%d", &b[i]);
}
vector<int> c(n+m);
for(i=0; i<n; i++){
for(k=0; k<m; k++){
if(a[i]==b[k]){
c[i]=a[i]; //c[cnt]=a[i]로 해야 c배열에 0번부터 차례대로 교집합 원소가 저장됩니다.
cnt++;
}
}
}
for(i=0; i<cnt-1; i++){
for(k=i+1; i<cnt; i++){ // k로 해야하는데 i로 오타를 했습니다.
if(c[i]>c[k]){
int tmp;
tmp=c[i];
c[i]=c[k];
c[k]=tmp;
}
}
}
for(i=0; i<cnt; i++){
printf("%d ", c[i]);
}
return 0;
}