[C#] 배열 조각하기

Connected Brain·2025년 7월 8일

코딩 테스트

목록 보기
26/67

배열 조각하기

문제 설명

정수 배열 arrquery가 주어집니다.
query를 순회하면서 다음 작업을 반복합니다.

  • 짝수 인덱스에서는 arr에서 query[i]번 인덱스를 제외하고 배열의 query[i]번 인덱스 뒷부분을 잘라서 버립니다.
  • 홀수 인덱스에서는 arr에서 query[i]번 인덱스는 제외하고 배열의 query[i]번 인덱스 앞부분을 잘라서 버립니다.

위 작업을 마친 후 남은 arr의 부분 배열을 return 하는 solution 함수를 완성해 주세요.

풀이

public class ArraySlicer
{
    public int[] Solution(int[] arr, int[] query)
    {
        List<int> arrList = arr.ToList();
        
        for (int i = 0; i < query.Length; i++)
        {
            //짝수 인덱스일 경우
            if (i % 2 == 0)
            {
                //arrList = arrList.Slice(0, query[i]+1);
                arrList = SliceList(arrList,0,query[i]);
            }
            //홀수 인덱스일 경우
            else
            {
                //arrList = arrList.Slice(query[i],arrList.Count-query[i]);
                arrList = SliceList(arrList,query[i],arrList.Count-1);
            }
        }

        return arrList.ToArray();
    }

    private List<int> SliceList(List<int> arrList, int start, int end)
    {
        List<int> result = new List<int>();

        for (int i = start; i <= end; i++)
        {
            result.Add(arrList[i]);
        }
        
        return result;
    }
}
  • 짝수와 홀수 인덱스에 따라 배열을 자르는 조치를 실시하기 위해 리스트 자료형에 포함된 Slice() 함수를 사용하였으나 제출하고자 하는 컴파일러에서 해당 함수를 사용할 수 없었음
    이를 해결하기 위해 특정 인덱스 범위로 리스트를 잘라서 반환하는 SliceList 함수를 구성
  • 짝수일 때는 0에서부터 query[i]번째 인덱스에 해당하는 요소까지 포함하도록 리스트를 자르고, 홀수일 때는 query[i]번째 인덱스에서부터 리스트의 끝 요소까지 포함하도록 리스트를 자르도록 실시

0개의 댓글