Stack/Coding test
[C# / Lv1] k번째 수
Seo_re:
2022. 1. 17. 16:17
반응형
using System;
public class Solution {
public int[] solution(int[] array, int[,] commands) {
int[] answer = new int[commands.GetLength(0)];
for(int i = 0; i < answer.Length; i++)
{
int start = commands[i, 0];
int end = commands[i, 1];
int[] splitArr = SplitArray(array, start, end);
Array.Sort(splitArr);
answer[i] = splitArr[commands[i, 2] - 1];
}
return answer;
}
private int[] SplitArray(int[] arr, int start, int end)
{
int[] returnArr = new int[end - start + 1];
Array.Copy(arr, start - 1, returnArr, 0, returnArr.Length);
return returnArr;
}
}
이차원 배열
- 2차원 배열은 [행, 열]로 이루어져있다.
- 각 차원에 대한 길이(Length)는 GetLength(N)으로 가져올 수 있는데 N의 값은 행(0), 열(1)이다.
배열의 복사
- Array.Copy(sourceArray(A), startIndex(B), destArray(C), copyStartIndex(D), copyLength(E))
- 원본 배열(A)의 인덱스(B)부터 원하는 갯수(E)만큼의 배열값을 복사될 배열(C)의 인덱스(D)부터 복사를 진행한다.
- 여기서 (E)의 값은 인덱스값이 아니라 원소의 갯수를 의미한다. 즉 (D)와 (E)의 값이 destArray의 범위를 벗어나면 안된다. (복사될 원소의 갯수가 배열의 범위를 벗어나므로 에러 발생)
배열 정렬
- 기본적으로 오름차순으로 정렬되게 되어있다.
- 내림차순으로 정렬을 하려면 Sort한 뒤 Reverse함수를 호출해주거나 IComparer를 지정해서 내림차순 정렬이 가능하다.
using System;
public class ReverseComparer : IComparer
{
public int Compare(object x, object y)
{
return (new CaseInsensitiveComparer()).Compare(y, x);
}
}
void main()
{
int[] arr = new int[] { 3, 7, 43, 7, 32, 5, 9, 11, 4, 2 };
//case 1
Array.Sort(arr);
Array.Reverse(arr);
//case 2
IComparer revCompare = new ReverseComparer();
Array.Sort(arr, revCompare);
//case 3
Array.Sort(arr, (a, b) =>
{
return b.CompareTo(a);
});
}
반응형