• 카테고리

    질문 & 답변
  • 세부 분야

    알고리즘 · 자료구조

  • 해결 여부

    미해결

40번 교집합 문제

23.06.27 01:07 작성 조회수 230

0

#include <iostream>
using namespace std;

int main()
{
    int i, j, tmp, a[30001],a1, b[30001],b2, c[30001], cnt=0;
    cin >> a1;
    for (i = 0; i < a1; i++)
    {
        cin >> a[i];
    }
    cin >> b2;
    for (i = 0; i < b2; i++)
    {
        cin >> b[i];
    }
    for (i = 1; i < a1; i++)//a
    {
        tmp = a[i];
        for (j = i - 1; j>0 ; j--)
        {
            if (a[j] > tmp) { a[j + 1] = a[j]; }
            else { break; } //조건에 안맞으면 바로 밑으로 넘어가게 해야한다.
        }
        a[j + 1] = tmp;
    }
    for (i = 1; i < b2; i++)//b
    {
        tmp = b[i];
        for (j = i - 1; j > 0; j--)
        {
            if (b[j] > tmp){ b[j + 1] = b[j]; }
            else { break; }
        }
        b[j + 1] = tmp;
    }
    for (i = 0; i < a1; i++)
    {
        for (j = 0; j < a1; j++)
        {
            if (a[i] == b[j])
            {
                c[i] = a[i];
                cnt++;
            }
        }
    }

    for (i = 0; i < cnt; i++)
    {
        cout << c[i];
    }
    return 0;
}

안녕하세요 선생님 제가 삽입정렬 방식으로 하고 코들르 구현하였는데 출력은 -로 나옵니다.
어디서 잘못된거인지를 못찾겠어서 질문 드립니다.

답변 1

답변을 작성해보세요.

0

안녕하세요^^

공통 원소를 c 배열에 넣을 때 c[i] = a[i]로 하면 안됩니다. c 배열에는 0번 인덱스부터 차례차례 하나씩 넣어야 합니다. 아래와 같이 수정하면 됩니다.

for (i = 0; i < a1; i++)
    {
        for (j = 0; j < b2; j++)
        {
            if (a[i] == b[j])
            {
                c[cnt] = a[i];
                cnt++;
            }
        }
    }