문제 링크 : 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 |