[BOJ][C#] 2467 용액

LimJaeJun·2023년 11월 22일
0

PS/BOJ

목록 보기
44/108

📕 문제

📌 링크

📗 접근 방식

  • 배열을 입력받아 투포인터를 이용하여 0과 가장 가까운 값을 출력

📘 코드

namespace BOJ_2467
{
    class Program
    {
        static void Main()
        {
            int n = int.Parse(Console.ReadLine());

            int[] inputs = Array.ConvertAll(Console.ReadLine().Split(), int.Parse);

            var answer = FindClosestToZero(inputs);

            Console.WriteLine($"{answer.Item1} {answer.Item2}");
        }

        static (int, int) FindClosestToZero(int[] inputs)
        {
            int left = 0;
            int right = inputs.Length - 1;

            int closestSum = int.MaxValue;
            int resultLeft = 0;
            int resultRight = 0;

            while (left < right)
            {
                int sum = inputs[left] + inputs[right];

                // 현재 합의 절대값이 이전까지의 최솟값보다 작으면 갱신
                if (Math.Abs(sum) < closestSum)
                {
                    closestSum = Math.Abs(sum);
                    resultLeft = inputs[left];
                    resultRight = inputs[right];
                }

                // 합이 0보다 작으면 왼쪽 인덱스를 증가, 크면 오른쪽 인덱스를 감소
                if (sum < 0)
                {
                    left++;
                }
                else
                {
                    right--;
                }
            }
            
            return (resultLeft, resultRight);
        }
    }
}

📙 오답노트

📒 알고리즘 분류

  • 이분 탐색
  • 투 포인터
profile
Dreams Come True

0개의 댓글

관련 채용 정보