일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 자료구조
- 닌텐도 스위치 2
- vrm posing desktop
- 이진 탐색
- 택시 기하학
- 그리디 알고리즘
- 다이나믹프로그래밍
- 큐
- VPS
- VRoid Studio
- unity engine
- 카니발대학교 공대강국
- 그래픽 디자인
- c#
- 코딩테스트
- T자형 인재
- 잴다의 전설 티어스 오브 더 킹덤
- i자형 인재
- 영어
- 마인크래프트
- 2025 대한민국 채용박람회
- 브루트포스 알고리즘
- 스택
- 시작
- 빅오 표기법
- 우선순위 큐
- 배열 리스트
- 라자냐
- blender
- windows 12
Archives
- Today
- Total
WalkerJei's Lifelog
백준알고리즘 1920번 수 찾기 C# 본문
세부 정보
- 사이트: 백준알고리즘
- 번호: 1920
- 문제명: 수 찾기
- 언어: C#
- 분류: 자료 구조, 정렬, 이분 탐색, 해시를 사용한 집합과 맵
- 비고:
문제
N개의 정수 A[1], A[2], …, A[N]이 주어져 있을 때, 이 안에 X라는 정수가 존재하는지 알아내는 프로그램을 작성하시오.
입력
첫째 줄에 자연수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 N개의 정수 A[1], A[2], …, A[N]이 주어진다. 다음 줄에는 M(1 ≤ M ≤ 100,000)이 주어진다. 다음 줄에는 M개의 수들이 주어지는데, 이 수들이 A안에 존재하는지 알아내면 된다. 모든 정수의 범위는 -2^31 보다 크거나 같고 2^31보다 작다.
출력
M개의 줄에 답을 출력한다. 존재하면 1을, 존재하지 않으면 0을 출력한다.
풀이
BinarySearch()를 사용하면 이진 탐색을 통한 분석을 하고 인덱스 번호를 할당한다.
using System.Text;
StreamReader sr = new StreamReader(Console.OpenStandardInput());
StreamWriter sw = new StreamWriter(Console.OpenStandardOutput());
StringBuilder sb = new StringBuilder();
// 1차적으로 입력할 자연수의 개수
int n = int.Parse(sr.ReadLine());
// 1차적으로 입력할 자연수들
string[] input = sr.ReadLine().Trim().Split();
// 1차 자연수와 2차 자연수를 비교하고
List<int> list = new List<int>();
// 2차적으로 입력할 자연수의 개수
int m = int.Parse(sr.ReadLine());
// 2차적으로 입력할 자연수들
string[] search = sr.ReadLine().Trim().Split();
// 리스트에 1차적으로 입력한 자연수들을 대입
for (int i = 0; i < input.Length; i++)
list.Add(int.Parse(input[i]));
// 리스트를 오름차순으로 정렬
list.Sort();
for (int i = 0; i < m; i++)
{
// 리스트를 이진 탐색으로 분석해서 인덱스 번호 할당
int index = list.BinarySearch(int.Parse(search[i]));
// 인덱스 번호가 0 미만이면 답이 존재하지 않기에 0이다.
// 인덱스 번호가 1 이상이면 답이 존재하기에 1이다.
sb.Append(index < 0 ? "0\n" : "1\n");
}
sw.WriteLine(sb.ToString());
sr.Close();
sw.Close();
후기
이 문제는 주로 사용하던 Convert.ToInt32()로 해결하려고 하면 "런타임 에러 (IndexOutOfRange)"를 출력하지만 int.Parse()를 사용하면 런타임 에러 없이 정상적으로 작동한다. 언급했던 두 함수들의 차이를 알아보아야겠다.
'소프트웨어 개발 > 코딩테스트(기성 문제)' 카테고리의 다른 글
백준알고리즘 5585번 거스름돈 C# (0) | 2025.04.27 |
---|---|
백준알고리즘 11047번 동전 0 C# (0) | 2025.04.26 |
백준알고리즘 10811번 바구니 뒤집기 C# (0) | 2025.04.24 |
백준알고리즘 11279번 최대 힙 C# (0) | 2025.04.23 |
백준알고리즘 3053번 택시 기하학 C# (0) | 2025.04.23 |