728x90
반응형
두 개의 배열 a와 b가 주어졌을 때, 두 배열이 서로 교환을 통해 동일하게 만들 수 있는지 여부를 판단하는 것입니다. 여기서 "교환"이라 함은 두 배열에서 하나의 원소 쌍을 선택하고 위치를 바꾸는 것을 의미합니다.
두 배열이 유사하려면 다음의 세 가지 조건 중 하나가 성립해야 합니다:
두 배열이 동일한 경우.
두 배열에서 위치가 다른 두 원소를 하나씩 선택하여 위치를 바꿀 경우, 그 결과 두 배열이 동일해야 함.
따라서 두 배열이 유사한지 확인하기 위해서는 다음과 같은 절차를 따릅니다:
bool solution(int[] a, int[] b) {
if(a.SequenceEqual(b)) return true;
List<int> diffIdx = new List<int>();
for(int i = 0;i<a.Length;i++){
if(a[i] != b[i]){
diffIdx.Add(i);
}
}
if(diffIdx.Count != 2) return false;
int temp = a[diffIdx[1]];
a[diffIdx[1]] = a[diffIdx[0]];
a[diffIdx[0]] = temp;
if(a.SequenceEqual(b)) return true;
return false;
}
두 배열이 동일한지 확인합니다. 동일하다면 true를 반환합니다.
두 배열에서 위치가 다른 두 원소를 하나씩 선택하여 위치를 바꾼 후, 그 결과가 동일한지 확인합니다. 동일하다면 true를 반환합니다.
위의 조건 중 어느 하나라도 성립하지 않는다면 false를 반환합니다.
728x90
반응형
'CodeSignal' 카테고리의 다른 글
palindromeRearranging (2) | 2023.12.10 |
---|---|
arrayChange (0) | 2023.12.09 |
Add Border (0) | 2023.12.05 |
reverseInParentheses (0) | 2023.12.03 |
alternating Sums (2) | 2023.12.03 |