동식이 취업시키기 작전/코딩테스트

[백준] 10815 숫자카트(C#)

이동식이 2024. 2. 4. 23:49
728x90

문제

https://www.acmicpc.net/problem/10815

코드

using System;
using System.Text;
using System.Collections.Generic;

namespace dongsik
{
    class Algorithm
    {
        static void Main(string[] str)
        {
            int n = int.Parse(Console.ReadLine());
            int[] nArr = Array.ConvertAll(Console.ReadLine().Split(' '), int.Parse);
            Array.Sort(nArr);

            int m = int.Parse(Console.ReadLine());
            int[] mArr = Array.ConvertAll(Console.ReadLine().Split(' '), int.Parse);

            StringBuilder sb = new StringBuilder();

            bool isComplete = false;

            for(int i = 0; i < mArr.Length; i++)
            {
                int target = mArr[i];
                int start = 0;
                int end = n - 1;

                while(start <= end)
                {
                    int mid = (start + end) / 2;

                    if(nArr[mid] == target)
                    {
                        isComplete = true;
                        break;
                    }

                    if(nArr[mid] < target)
                    {
                        start = mid + 1;
                    }
                    else
                    {
                        end = mid - 1;
                    }
                }

                if(isComplete == true)
                {
                    sb.Append("1" + " ");
                    isComplete = false;
                }
                else
                {
                    sb.Append("0" + " ");
                }
            }
            Console.Write(sb);
        }
    }
}

고민

이진 탐색은 위와같은 코드로 계속 반복되는 거 같다. 3문제를 풀었는데 문제만 다르지 푸는 방법은 같다.