기억보다 기록을

[Programmers] 배열의 유사도 본문

Algorithm/Programmers

[Programmers] 배열의 유사도

juyeong 2023. 1. 13. 17:32
반응형
def solution(s1, s2):
    count = 0
    for i in s1:
        if i in s2:
            answer += 1
            count +=1

    return count

# 합집합은 | 사용
def solution2(s1, s2):
    return len (set(s1) & set(s2))

# 배열끼리 + 하면 합집합이구나 알 수 있음(중복제거됨)
def solution3(s1, s2):
    return len(s1)+ len(s2)- len (set([s1 + s2]))

    
    resource: https://school.programmers.co.kr/learn/courses/30/lessons/120903
    suedo code:
        0. declare 1 variable 'count' initialize w/ '0'
        1. traverse each array
        2. if find s2' char
        3. add 1 number on variable 
        4. return count


        이게 내가 생각한 기본 풀이인데  만약 이 문제를 집합 문제라고 생각하면? 


        1) 교집합 구하기 - solution2
        2) 전체 개수에서 (중복개수 제거안함) - 두개의 합집합 수를 뺀다 - solution3
         - https://dojang.io/mod/page/view.php?id=2315 참고 (집합 연산 in python)
        

문득, '유사도'면 s1,s2의 원소들로 구성할 수 있는 전체 경우의 수에서 같은 원소의 개수 퍼센티지를 구해 리턴하는 문제여야 제목에 더 부합하는 것 같다고 생각했다. 쉬운 난이도를 위해 그냥 개수만 리턴하라 한듯.. 그 경우엔 아래의 상대빈도를 사용해보기

https://wikidocs.net/84193

 

a. 상대빈도 구하기 - 간단한 방법

``` arr = [2, 0, 1, 3, 2, 0, 2, 3, 0, 1, 1, 2, 2, 0, 3] ``` 앞서 다뤘던 리스트입니다. ``` brr = [4, 3, 5…

wikidocs.net

 

 

반응형