알고리즘/C#

[C#] K번째 가져오기 - 프로그래머스

야아옹 2020. 10. 5. 16:07

문제 : array 의 i 번째 숫자부터 j 번째 숫자까지 자르고 정렬했을때 K 번째의 수를 구하기

 

예시 :

 

[1, 5, 2, 6, 3, 7, 4]를 2번째부터 5번째까지 자른 후 정렬합니다. [2, 3, 5, 6]의 세 번째 숫자는 5입니다.
[1, 5, 2, 6, 3, 7, 4]를 4번째부터 4번째까지 자른 후 정렬합니다. [6]의 첫 번째 숫자는 6입니다.
[1, 5, 2, 6, 3, 7, 4]를 1번째부터 7번째까지 자릅니다. [1, 2, 3, 4, 5, 6, 7]의 세 번째 숫자는 3입니다.

 

풀이 - 처음에 2자리 이상 수를 생각하지 않고 array 배열을 string으로 바꾸고 자른후 다시 캐스팅을 했다가

문제 제출시  Error 가 발생해서.. 다시 문제 를 풀었다..

      - 다른 문제 풀이 봤는데... linq 가 많다... 공부할것이 늘어나는구나..!!

public static int[] solution(int[] array, int[,] commands)
        {
            List<int> answer = new List<int>();
            string strArray = string.Join(",", array); 

            int count = 0;
            int startNum = 0;
            int lengthNum = 0;

            foreach (int item in commands)
            {
                if (count == 0)
                {
                    count++;
                    startNum = item;
                    continue;
                }

                if (count == 1)
                {
                    count++;
                    lengthNum = item;
                    continue;
                }

                if (count == 2)
                {
                    count = 0;

                    int[] resultArr = new int[lengthNum - startNum + 1];
                    int index = 0;

                    for (int i = startNum - 1; i < lengthNum; i++)
                    {
                        resultArr[index] = array[i];
                        index++;
                    }
                    Array.Sort(resultArr);
                    answer.Add(resultArr[item - 1]);
                }

            }
            return answer.ToArray();
        }