SMALL
https://www.acmicpc.net/problem/1920
1920번: 수 찾기
첫째 줄에 자연수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 N개의 정수 A[1], A[2], …, A[N]이 주어진다. 다음 줄에는 M(1 ≤ M ≤ 100,000)이 주어진다. 다음 줄에는 M개의 수들이 주어지는데, 이 수들
www.acmicpc.net
- 문제
- 문제풀이
리스트를 활용하지 않고 이분탐색을 이용해야 시간초과가 되지 않는다.
- 코드 1
using System;
using System.Text;
class Program
{
private static char Compare(int x, int y)
{
if (x > y)
return '>';
else if (x < y)
return '<';
else
return '=';
}
private static int BinarySearch(int[] datas,int iPoint)
{
int right = datas.Length - 1;
for (int left = 0; left <= right;)
{
int middle = (left + right) / 2;
switch (Compare(iPoint, datas[middle]))
{
case '>': left = middle + 1; break;//x>datas[middle]
case '<': right = middle - 1; break;//x<datas[middle]
case '=': return 1;
}
}
return 0;
}
static void Main(string[] args)
{
StringBuilder sb = new StringBuilder();
int N = int.Parse(Console.ReadLine());
string[] input = Console.ReadLine().Split();
int[] arr = new int[N];
for (int i = 0; i < N; i++)
{
arr[i] = int.Parse(input[i]);
}
Array.Sort(arr);
int M = int.Parse(Console.ReadLine());
string[] arr2 = Console.ReadLine().Split();
for (int i = 0; i < M; i++)
{
int check = int.Parse(arr2[i]);
sb.Append(BinarySearch(arr, check) + "\n");
}
Console.WriteLine(sb);
}
}
- 후기
점점 포인터가 많아진다 어렵다
LIST
'백준 > C#' 카테고리의 다른 글
[C#]백준 24479번: 알고리즘 수업-깊이 우선 탐색 1 (0) | 2023.03.05 |
---|---|
[C#]백준 1260번: DFS와 BFS (0) | 2023.03.04 |
[C#]백준 9020번: 골드바흐의 추측 (0) | 2023.02.05 |
[C#]백준 6198번: 옥상 정원 꾸미기 (0) | 2023.02.05 |
[C#]4948번: 베르트랑 공준 (0) | 2023.02.04 |