Archive

[Hackerrank] pairs 본문

공부/Algorithm

[Hackerrank] pairs

mariabeetle 2020. 8. 10. 20:52

https://www.hackerrank.com/challenges/pairs/problem

 

Pairs | HackerRank

Given N numbers, count the total pairs of numbers that have a difference of K.

www.hackerrank.com

풀이

  • Input : 두 개 숫자의 차이 k, 숫자 배열 arr
  • arr에 있는 두 개의 숫자의 차이가 k인 모든 경우의 수를 구하는게 문제
  • 시간복잡도를 줄이는 문제로, 2중 반복문으로는 통과할 수 없음 -> O(NlogN) 이하 필요
  • python인 경우, set자료구조에서 교집합을 구할 때의 시간복잡도는 두 개 리스트 길이의 합.
    • O(len(s) + len(t))
  • set의 자료구조를 사용해 전체 item에 k를 더한 집합과 원래의 집합의 교집합을 구해줌으로써 시간복잡도를 줄일 수 있음
  • 시간복잡도 : O(3N)
    • set(arr) : O(N) ; N은 arr의 길이
    • set([item + k for item in set(arr)]) : O(N)
    • set(set(arr) & set([arr+k인 리스트]) ) : O(2N)
    • len(arr) : O(1)
def pairs(k, arr):
    return len(set(arr) & set([item + k for item in set(arr)]))

'공부 > Algorithm' 카테고리의 다른 글

[Hackerrank] [Medium] New Year Chaos  (0) 2020.08.12
[Hackerrank] [Hard] Maximum Subarray Sum  (0) 2020.08.11
[Hackerrank] Triple sum  (0) 2020.08.10
[Hackerrank] Hash Tables: Ice Cream Parlor  (0) 2020.08.10
[programmers] Level4. 징검다리  (0) 2020.08.06
Comments