노력에는 지름길이 없으니까요

프로그래머스 - 배열의 유사도 Python ver. 본문

Python/프로그래머스

프로그래머스 - 배열의 유사도 Python ver.

데건 2024. 7. 18. 15:19
728x90

 

해결일 언어 레벨 테스트명
20240718 Python level 0  배열의 유사도

 

링크 : https://school.programmers.co.kr/learn/courses/30/lessons/120903

 

 

 

문자열 리스트 두 개가 주어질 때, 같은 원소의 개수를 return하기

 


 

내 코드

def solution(s1, s2):
    return len([i for i in s1 if i in s2])

 

 

 

베스트 코드

def solution(s1, s2):
    return len(set(s1)&set(s2));

 

여기서 set을 어떻게 쓴 건지 궁금해서 입출력 예에 있는 테스트 케이스 하나를 응용하고 추가해서 한 번 살펴보았다.

 

s1 = ["a", "b", "c", "c", "c"]

s2 = ["com", "b", "d", "p", "c", "b"]

result =2

 

이 경우,

set(s1) -> 중복된 데이터를 모두 삭제

-> {'b', 'a', 'c'}

 

set(s2) -> 중복된 데이터를 모두 삭제

-> {'com', 'd', 'b', 'c', 'p'}

 

set(s1)&set(s2) -> set(s1)와 set(s2) 중 겹치는 데이터를 출력

-> {'b', 'c'}

 

제한사항 중 s1과 s2는 각각 중복된 원소를 갖지 않는다는 조건이 있었기에 굳이 set을 할 필요는 없었던 것 같지만...

아마 &를 사용하기 위해 set을 붙인 듯 하다.

리스트 형태 그대로 시도해보았더니 에러가 뜬다.

TypeError: unsupported operand type(s) for &: 'list' and 'list'

 

728x90
반응형