View
문제 설명
두 배열이 얼마나 유사한지 확인해보려고 합니다. 문자열 배열 s1과 s2가 주어질 때 같은 원소의 개수를 return하도록 solution 함수를 완성해주세요.
제한사항
- 1 ≤ s1, s2의 길이 ≤ 100
- 1 ≤ s1, s2의 원소의 길이 ≤ 10
- s1과 s2의 원소는 알파벳 소문자로만 이루어져 있습니다
- s1과 s2는 각각 중복된 원소를 갖지 않습니다.
입출력 예s1s2result
["a", "b", "c"] | ["com", "b", "d", "p", "c"] | 2 |
["n", "omg"] | ["m", "dot"] | 0 |
입출력 예 설명
입출력 예 #1
- "b"와 "c"가 같으므로 2를 return합니다.
입출력 예 #2
- 같은 원소가 없으므로 0을 return합니다.
나의 풀이
def solution(s1, s2):
count = 0
for i in s1:
for j in s2:
if i == j:
count += 1
return count
다른풀이
두 집합의 중복 즉, 교집합에 속하는 원소들의 갯수를 구하는 문제이다.
set()은 집합 연산을 가능케 하며, 이를 통해 새로운 집합을 만든다.
def solution(s1, s2):
return len(set(s1)&set(s2))
- 교집합
set1 = set([1,2,3,4,5,6])
set2 = set([3,4,5,6,8,9])
print(set1 & set2)
print(set1.intersection(set2))
{3, 4, 5, 6}
{3, 4, 5, 6}
- 합집합
set1 = set([1,2,3,4,5,6])
set2 = set([3,4,5,6,8,9])
print(set1 | set2)
print(set1.union(set2))
{1, 2, 3, 4, 5, 6, 8, 9}
{1, 2, 3, 4, 5, 6, 8, 9}
- 차집합
set1 = set([1,2,3,4,5,6])
set2 = set([3,4,5,6,8,9])
print(set1 - set2)
print(set1.difference(set2))
{1, 2}
{1, 2}
- 대칭 차집합
set1 = set([1,2,3,4,5,6])
set2 = set([3,4,5,6,8,9])
print(set1 ^ set2)
{1, 2, 8, 9}
- 집합의 추가와 제거
set1 = set([1,2,3,4,5,6])
set1.update([7,8,9]) # update
print(set1)
set1.remove(9) # remove
print(set1)
Reference
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
programmers) 세균 증식 (0) | 2022.11.06 |
---|---|
programmers) 문자 반복 출력하기 (0) | 2022.11.06 |
programmers) 자릿수 더하기 (0) | 2022.11.06 |
programmers) 특정 문자 제거하기 (0) | 2022.11.06 |
programmers) 등수 매기기 (1) | 2022.11.06 |
reply