코딩문제풀이/파이썬
[프로그래머스] 뉴스 클러스터링(파이썬)
오늘밤공부
2023. 2. 21. 13:53
반응형
🗓️ 문제 설명
- 자카드 유사도는 집합 간의 유사도를 검사하는 방법 중의 하나로 두 집합이 주어지면 자카드 유사도 J(A, B)는 두 집합의 교집합 크기를 두 집합의 합집합 크기로 나눈 값으로 정의됩니다.
- 입력으로 들어온 문자열은 두 글자씩 끊어서 다중집합의 원소로 만듭니다.
- 다중집합의 원소는 영문자로 된 글자 쌍만 유효하고, 기타 공백이나 숫자, 특수 문자가 들어있는 경우는 그 글자 쌍을 버립니다.
- 입력으로 들어온 두 문자열의 자카드 유사도를 출력합니다.
유사도 값은 0에서 1사이의 실수이므로, 이를 다루기 쉽도록 65536을 곱한 후에 소수점 아래를 버리고 정부만 출력합니다. - 제한 사항
- 2 ≤ str1, str2 길이 ≤ 1000
- 다중집합 원소 사이를 비교할 때, 대문자와 소문자의 차이는 무시합니다.
- 입출력 예시
str1 | str2 | answer |
FRANCE | french | 16384 |
handshake | shake hands | 65536 |
aa1+aa2 | AAAA12 | 43690 |
E=M*C^2 | e=m*c^2 | 65536 |
💻 코드
최종 코드
- 수정 사항
>> 차집합 구하는 과정 수정
코드 풀이
다른 사람 풀이
더보기


풀이 1번

- set를 이용한 합집합과 교집합을 구해 원소들의 최소 최대를 통해 자카드 유사도를 구함
풀이 2번

- isalpha()를 이용한 문자열 추출
⚙️ 시행착오
1차 시도
더보기


- 정규표현식을 이용해 다중집합을 만드는 과정에서 영문자 외의 문자가 포함
2차 시도
더보기


- 수정 사항
>> 정규표현식에서 두 글자의 영문자만 포함하도록 코드 수정
- 영문자만 포함한 다중집합을 만드는 과정은 성공적으로 진행
- 합집합과 교집합에 빈리스트가 들어가는 경우가 발생해 자카드 유사도를 구하는 과정에서 zerodivisionerror 발생
3차 시도
더보기


- 수정 사항
>> 다중 합집합이 빈 리스트인지 아닌지를 파악하는 조건문 추가
>> 합집합을 만드는 과정을 수정(리스트를 더하기→ 반복문을 통한 합집합 생성)
- 테스트 실패나 발생하는 문제가 존재
알게된 점
더보기


다중 합집합을 구하는 반복문

다중 교집합을 구하는 반복문

반응형