본문 바로가기
CodeSignal

Are Similar?

by Doromi 2023. 12. 6.
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