본문 바로가기
CodeSignal

extractEachKth

by Doromi 2023. 12. 19.
728x90
반응형

정수 배열이 주어졌을 때, 배열에서 매 k번째 요소를 제거하는 것입니다. 

예를 들어, 주어진 배열이 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]이고 k가 3이면, 3번째 요소와 그 다음에도 3의 배수에 해당하는 요소들을 제거한 새로운 배열을 반환해야 합니다.

예시로 주어진 입력에서는 [1, 2, 4, 5, 7, 8, 10]이 되어야 합니다.

int[] solution(int[] inputArray, int k) {
    List<int> li = inputArray.ToList();
    int num = inputArray.Length/k;
    for(int i = num;i >= 1;i--){
        li.RemoveAt(k*i-1);
    }
    return li.ToArray();
}
inputArray를 List<int>로 변환합니다.
제거할 요소의 개수인 num을 계산합니다.
뒤에서부터 k번째 요소를 제거합니다. (RemoveAt 메서드를 사용하여 해당 인덱스의 요소를 제거합니다.)
마지막으로, List<int>를 다시 배열로 변환하여 반환합니다.
주의할 점은 뒤에서부터 REMOVE를 해줘야 INDEX 오류가 나지 않는다.

 

삭제하는 방법 말고도 FOR문을 돌면서 제외할 값을 뺀 나머지 값들로 ARRAY를 만드는 방법이 있다.
static int[] solution(int[] inputArray, int k)
    {
        List<int> result = new List<int>();

        for (int i = 0; i < inputArray.Length; i++)
        {
            // (i + 1) % k == 0 이면 k의 배수이므로 해당 요소를 제외하고 결과에 추가
            if ((i + 1) % k != 0)
            {
                result.Add(inputArray[i]);
            }
        }

        return result.ToArray();
    }
728x90
반응형

'CodeSignal' 카테고리의 다른 글

growingPlant  (0) 2023.12.24
differentSymbolsNaive  (1) 2023.12.22
Circle of Numbers  (0) 2023.12.18
chessBoardCellColor  (2) 2023.12.17
stringsRearrangement  (1) 2023.12.17