https://school.programmers.co.kr/learn/courses/30/lessons/120903
[문제 설명]
두 배열이 얼마나 유사한지 확인해보려고 합니다. 문자열 배열 s1과 s2가 주어질 때 같은 원소의 개수를 return하도록 solution 함수를 완성해주세요.
제한사항
- 1 ≤ s1, s2의 길이 ≤ 100
- 1 ≤ s1, s2의 원소의 길이 ≤ 10
- s1과 s2의 원소는 알파벳 소문자로만 이루어져 있습니다
- s1과 s2는 각각 중복된 원소를 갖지 않습니다.
[나의 풀이]
def solution(s1, s2):
answer = 0
for i1 in s1:
for i2 in s2:
if i1 == i2:
answer += 1
return answer
[다른 풀이]
def solution(s1, s2):
return len(set(s1)&set(s2))
set() 과 &를 이용하여 집합으로 만들어서 교집합을 구하는 방법
def solution(s1, s2):
s1 = set(s1)
s2 = set(s2)
return len(s1.intersection(s2))
위와 유사한 방법
& 대신 intersection()함수를 사용
def solution(s1, s2):
dic = {i:1 for i in s1}
answer = sum(dic.get(j,0)for j in s2)
return answer
dic에 s1의 원소들을 key값으로 하고 value를 1로 저장해둠
나중에 s2의 원소들을 key값으로 넣어서 동일한 key가 있으면 1을, 없으면 0을 불러오게끔 함
그렇게 마지막에 sum을 하면 겹치는 원소의 개수를 셀 수 있음
def solution(s1, s2):
answer = 0
for i in range(len(s1)) :
for j in range(len(s2)) :
if s1[i] == s2[j] :
answer += 1
return answer
인덱스 값을 i와 j로 두고 s1[i] == s2[j]인지를 확인하는 방법
'프로그래머스 > 파이썬_입문' 카테고리의 다른 글
n의 배수 고르기 (0) | 2024.11.11 |
---|---|
숫자 찾기 + try-except구문 (0) | 2024.11.10 |
문자열 계산하기 (0) | 2024.11.09 |
가장 큰 수 찾기 (0) | 2024.11.08 |
편지 + 비트시프트연산자 << (0) | 2024.11.07 |