c++

백준 c++ 10815 문제 풀이

psb08 2025. 5. 10. 11:45
728x90
반응형

문제 링크 : https://www.acmicpc.net/problem/10815

목차

1. 설명

 

2. 내 코드

 

3. 문제 풀이 해석 내용

 

4. 실행 결과

 

설명

백준 실버 5 문제 입니다.

문제명 : 숫자 카드

 

내 코드

#include <iostream>
#include <algorithm>
#include <string>
#include <queue>
#include <vector>

using namespace std;

int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);

    int n;
    cin >> n;

    vector<int> cards(n);

    for (int i = 0; i < n; ++i)
    {
        cin >> cards[i];
    }

    sort(cards.begin(), cards.end());

    int m;
    cin >> m;

    for (int i = 0; i < m; ++i)
    {
        int num;
        cin >> num;

        if (binary_search(cards.begin(), cards.end(), num))
            cout << "1 ";
        else
            cout << "0 ";
    }

}

 

문제 풀이 해석 내용

 

숫자 카드 목록 입력

int n;
cin >> n; // 숫자 카드의 개수 입력

vector<int> cards(n); // n 크기의 벡터 선언

for (int i = 0; i < n; ++i)
{
    cin >> cards[i]; // n개의 숫자 카드 입력받아 벡터에 저장
}

int n; cin >> n;: 사용자가 가진 숫자 카드의 개수 n을 입력받습니다.
vector<int> cards(n);: n개의 정수를 저장할 수 있는 벡터 cards를 생성합니다.
for 루프를 사용하여 n번 반복하며 각 숫자 카드의 값을 입력받아 cards 벡터에 순서대로 저장합니다.

 

 

숫자 카드 정렬

sort(cards.begin(), cards.end());

sort(cards.begin(), cards.end());: std::sort 함수를 사용하여 cards 벡터의 모든 요소를 오름차순으로 정렬합니다. 

이진 탐색은 정렬된 데이터에서만 가능하므로 이 단계가 필수적입니다.

 

 

검색할 숫자 개수 입력

int m;
cin >> m; // 검색할 숫자의 개수 입력

int m; cin >> m;: 사용자가 검색하고자 하는 숫자의 개수 m을 입력받습니다.

 

 

검색 및 결과 출력 루프

for (int i = 0; i < m; ++i) // m번 반복 (검색할 숫자 개수만큼)
{
    int num;
    cin >> num; // 검색할 숫자 입력받기

    // 이진 탐색으로 숫자 존재 여부 확인
    if (binary_search(cards.begin(), cards.end(), num))
        cout << "1 "; // 존재하면 1 출력
    else
        cout << "0 "; // 존재하지 않으면 0 출력
}

for 루프를 사용하여 m번 반복하며 각 검색할 숫자를 처리합니다.
int num; cin >> num;: 검색할 숫자를 입력받습니다.


binary_search(cards.begin(), cards.end(), num): std::binary_search 함수를 사용합니다. 이 함수는 cards 벡터의 시작(cards.begin())부터 끝(cards.end())까지의 범위에서 num 값이 존재하는지 효율적으로 검색합니다.
binary_search는 해당 값이 존재하면 true를, 존재하지 않으면 false를 반환합니다.


if (binary_search(...)) cout << "1 ";: binary_search 결과가 true이면 1을 출력하고 공백을 추가합니다.
else cout << "0 ";: 결과가 false이면 0을 출력하고 공백을 추가합니다.

 

 

실행 결과

 

'c++' 카테고리의 다른 글

백준 c++ 14425 문제 풀이  (0) 2025.05.12
백준 c++ 1620 문제 풀이  (0) 2025.05.11
백준 c++ 5430 문제 풀이  (0) 2025.05.09
백준 c++ 18258 문제 풀이  (0) 2025.05.08
백준 c++ 9012 문제 풀이  (0) 2025.05.07