티스토리 뷰

Codesignal

code signal - 16. Are similar?

터보건 2020. 2. 16. 16:54

Question

Two arrays are called similar if one can be obtained from another by swapping at most one pair of elements in one of the arrays.

Given two arrays a and b, check whether they are similar.


Example

  • For a = [1, 2, 3] and b = [1, 2, 3], the output should be areSimilar(a, b) = true.

    The arrays are equal, no need to swap any elements.

  • For a = [1, 2, 3] and b = [2, 1, 3], the output should be areSimilar(a, b) = true.

    We can obtain b from a by swapping 2 and 1 in b.

  • For a = [1, 2, 2] and b = [2, 1, 1], the output should be areSimilar(a, b) = false.

    Any swap of any two elements either in a or in b won't make a and b equal.


Input/Output

  • [execution time limit] 4 seconds (py3)

  • [input] array.integer a

    Array of integers.

    Guaranteed constraints: 3 ≤ a.length ≤ 105, 1 ≤ a[i] ≤ 1000.

  • [input] array.integer b

    Array of integers of the same length as a.

    Guaranteed constraints: b.length = a.length, 1 ≤ b[i] ≤ 1000.

  • [output] boolean

    • true if a and b are similar, false otherwise.

MY_ANSWER

def areSimilar(a, b):
    element = sorted(a) == sorted(b) #list에 같은 원소가 있는지 확인
    diff = sum([i != j for i,j in zip(a,b)]) <3 # 본래 위치에서 2개의 값이 차이가 나면 swap가능 
    return element and diff                    # 그러나 3개가 넘어가면 swap 불가 
  • list a에 있는 원소의 위치를 단 한번만 바꾸었을 때, list b가 된다면 true를 반환한다. 위치를 바꾸었을 때 두 list가 같지 않다면 false

  • element는 정렬을 하여 두 리스트에 동일한 원소가 있는지 확인한다.

  • diff는 정렬하지 않는 본래의 두 개의 리스트에 있는 원소를 비교하면서 위치를 파악

    원소가 동일하더라도 위치가 차이가 3개 이상 차이가 난다면 한 번 swep을 해도 동일해 지지 않을 것이다.


Best_ANSWER

def areSimilar(A, B):
    return sorted(A)==sorted(B) and sum([a!=b for a,b in zip(A,B)])<=2
  • my_answer보다 간결하게 적으면 best_answer가 된다. 너무 어려워서 ㅠㅠ 답을 본 문제

 

'Codesignal' 카테고리의 다른 글

code signal - 18. palindromeRearranging  (0) 2020.02.19
code signal - 17. arrayChange  (0) 2020.02.19
code signal - 15. Add Border  (0) 2020.02.16
code signal - 14. alternatingSums  (0) 2020.02.10
code signal - 13. reverseInParentheses  (0) 2020.02.09
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함