배열의 유사도

2024. 9. 16. 18:00코딩테스트 입문

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


문제 설명
두 배열이 얼마나 유사한지 확인해보려고 합니다. 문자열 배열 s1과 s2가 주어질 때 같은 원소의 개수를 return하도록 solution 함수를 완성해주세요.


제한사항

  • 1 ≤ s1, s2의 길이 ≤ 100
  • 1 ≤ s1, s2의 원소의 길이 ≤ 10
  • s1s2의 원소는 알파벳 소문자로만 이루어져 있습니다
  • s1과 s2는 각각 중복된 원소를 갖지 않습니다.

입출력 예

s1 s2 result
["a", "b", "c"] ["com", "b", "d", "p", "c"] 2
["n", "omg"] ["m", "dot"] 0

입출력 예 설명
입출력 예 #1

  • "b"와 "c"가 같으므로 2를 return합니다.

입출력 예 #2

  • 같은 원소가 없으므로 0을 return합니다.

주어진 문자 리스트 s1, s2에 대해서, s1에 있는 값들이 s2에 얼마나 속하는지 확인하는 문제입니다.

 

둘 모두에 속하는 문자가 얼마나 많은지 체크하는 문제인데, 개수로만 세기 때문에 같으면 1, 다르면 0으로 구별하는 식으로 풀 수 있습니다. 리스트 컴프리헨션을 사용하는 방법으로 반복문을 구성해 문제를 풀어보겠습니다.

파이썬을 사용합니다.

def solution(s1, s2):
    # s1에 포함된 s가 s2에 포함되면 1, 아니면 0을 반환합니다.
    # sum을 사용해서 값을 더해줍니다.
    answer = sum([1 if s in s2 else 0 for s in s1])
    return answer

 

s1에 포함되는 s 값들을 전부 s2에 포함되는지 검사합니다.

s1, s2에 모두 포함되는 s 값들이 있을 때, 리스트에는 1이 추가됩니다. 반대로 모두 포함되지 않았다면 리스트에는 0이 추가됩니다.

이 값들을 전부 더해주면 얼마나 값들이 구할 수 있습니다.

 

따로 복잡한 함수를 사용할 필요 없이 쉽게 풀 수 있는 문제입니다.

'코딩테스트 입문' 카테고리의 다른 글

n의 배수 고르기  (0) 2024.09.18
숫자 찾기  (1) 2024.09.17
문자열 계산하기  (0) 2024.09.15
가장 큰 수 찾기  (0) 2024.09.14
편지  (0) 2024.09.13