728x90
반응형
[백준] C++ & C# 숫자 카드 2 (10816번) 실버 4
📝 문제
숫자 카드는 정수 하나가 적혀져 있는 카드이다. 상근이는 숫자 카드 N개를 가지고 있다. 정수 M개가 주어졌을 때, 이 수가 적힌 숫자 카드를 상근이가 몇 개 가지고 있는지 구하는 프로그램을 작성하시오.
🔎 입력
첫째 줄에 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다.
둘째 줄에 숫자 카드에 적혀있는 정수가 주어진다.
셋째 줄에 M(1 ≤ M ≤ 500,000)이 주어진다.
넷째 줄에는 M개의 정수가 주어진다. 이 숫자가 상근이가 가지고 있는 숫자 카드인지 확인해야 한다.
카드에 적혀있는 숫자의 범위는 -10,000,000부터 10,000,000까지이다.
🔎 출력
각 수에 대해 상근이가 가지고 있는 숫자 카드의 개수를 출력한다.
🎀 입출력 예시
코드
c++
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
int n; // 1번 배열 갯수
cin >> n ; // 배열의 크기 입력 받음
int arr1[n]; // 첫번째 배열을 입력받은 크기만큼 생성
for (int i = 0; i < n; i++){
cin >> arr1[i];
}
sort(arr1,arr1 + n); // 배열 정렬
int m; // 2번 배열 갯수
cin >> m ; // 배열의 크기 입력 받음
int arr2[m]; // 두번째 배열을 입력받은 크기만큼 생성
for (int i = 0; i < m; i++){
cin >> arr2[i];
}
for(int i = 0; i< m ; i++){
int upper = upper_bound(arr1,arr1 + n,arr2[i]) - arr1;
int lower = lower_bound(arr1,arr1 + n, arr2[i]) - arr1;
cout << upper - lower <<' ';
}
}
c#
using System;
using System.Linq;
class Program
{
static void Main(string[] args)
{
int n = int.Parse(Console.ReadLine());
int[] arr1 = Array.ConvertAll(Console.ReadLine().Split(), int.Parse);
Array.Sort(arr1);
int m = int.Parse(Console.ReadLine());
int[] arr2 = Array.ConvertAll(Console.ReadLine().Split(), int.Parse);
foreach (int num in arr2)
{
int upper = Array.BinarySearch(arr1, num + 1);
int lower = Array.BinarySearch(arr1, num);
upper = upper < 0 ? ~upper : upper;
lower = lower < 0 ? ~lower : lower;
Console.Write((upper - lower) + " ");
}
}
}
728x90
반응형
'◆C# > C# : 백준 문제 풀이' 카테고리의 다른 글
[백준] C++ & C# 좌표 정렬하기 (11650번) (0) | 2024.09.20 |
---|---|
[백준] C++ & C# 블랙잭 (2798번) (0) | 2024.09.20 |
[백준] C++ & C# 수 정렬하기 3 (10989번) (0) | 2024.09.20 |
[백준] C++ & C# 수 정렬하기 2 (2751번) (0) | 2024.09.20 |
[백준] C++ & C# 수 찾기 (1920번) 실버 4 (0) | 2024.09.20 |