[6/8] 뉴스 클러스터링

이경준·2021년 6월 8일
0

코테

목록 보기
32/140
post-custom-banner

문제

내 코드

def solution(str1, str2):

    temp1, temp2 = '', ''
    arr1, arr2 = [], []

    # 2개씩 쪼개기
    for i in range(len(str1)-1):
        if (str1[i:i+2].isalpha()):
            arr1.append(str1[i:i+2].lower())

    for j in range(len(str2)-1):
        if (str2[j:j+2].isalpha()):
            arr2.append(str2[j:j+2].lower())

    # 교집합 합집합
    inter = []
    union = arr1 + arr2

    for k in arr1:
        if (k in arr2):
            inter.append(k)
            arr2.remove(k)

    for m in inter:
        union.remove(m)
        
    if (len(union) == 0):
        answer = 65536
    else:
        answer = int((len(inter) / len(union)) * 65536)
    
    return answer

풀이

  1. str1과 str2를 각각 for문을 돌린다.
    a) 2개로 쪼갠 문자열이 알파벳으로 이루어져 있으면, 소문자로 변환해서 arr에 추가한다.
  2. union에 arr1과 arr2를 더해준다.
  3. arr1을 for문을 돌린다.
    a) arr2 안에 있는 원소면 inter에 추가해주고, arr2에서 해당 원소를 제거한다.
  4. inter를 for문을 돌린다.
    a) 모든 원소를 한번씩 union에서 삭제해준다.
  5. if문을 넣어서, 분모가 0이면 65536을 반환하고 아니라면 정해진 수식에 따라 계산한 값을 반환한다.

효율적인 코드

피드백

  • 두개로 나눠지는게 없는 테스트케이스가 왜 65536으로 반환하게 문제를 만들었는지는 잘 모르겠다. 예외처리 할 생각을 못해서 오랫동안 생각했다.
profile
The Show Must Go On
post-custom-banner

0개의 댓글