[ 프로그래머 스 ] [ 1 차 ] 뉴스 클러스터 링 / 파이썬 
 [ 1 차 ] 뉴스 클러스터 링 
 개발 의 방향 을 잡 기 위해 튜브 는 우선 최근 화제 가 되 고 있 는 카카오 신입 개발자 공채 관련 기사 를 검색 해 보 았 다 . 
 카카오 첫 공채 . .' 블라인드 ' 방식 채용 
 카카오 , 신입 공채 . . 코딩 실력 만 본다 
 카카오 코딩 능력 만 으로 2018 신입 개발자 뽑 는다 
 기사 의 제목 을 기준 으로 블라인드 전형 에 주목 하 는 기사 와 코딩 테스트 에 주목 하 는 기사 로 나뉘 는 걸 발견 했 다 . 튜브 는 이 들 을 각각 묶 어서 보여 주 면 카카오 공채 관련 기사 를 찾아보 는 사용자 에게 유용 할 듯 싶 었 다 . 
 유사 한 기사 를 묶 는 기준 을 정하 기 위해서 논문 과 자료 를 조사 하 던 튜브 는 자 카드 유사 도라 는 방법 을 찾아냈 다 . 
 입력 으로 들어온 문자열 은 두 글자 씩 끊 어서 다중 집합 의 원소 로 만든 다 . 이때 영문자 로 된 글자 쌍 만 유효 하 고 , 기타 공백 이나 숫자 , 특수 문자 가 들 어 있 는 경우 는 그 글자 쌍 을 버린다 . 예 를 들 어 ab + 가 입력 으로 들어오 면 , ab 만 다중 집합 의 원소 로 삼 고 , b + 는 버린다 . 
 다중 집합 원소 사이 를 비교 할 때 , 대문자 와 소문자 의 차이 는 무시 한다 . AB 와 Ab , ab 는 같 은 원소 로 취급 한다 . 
 for 문과 try 문 을 이용 해서 모든 경우 를 계산 한 경우 ( 좋 은 풀이 는 아님 ) 
 def solution ( str 1 , str 2 ) : 
 # 1 . str 1 의 값 을 2 칸 단위 로 쪼 갬 
 # 2 . 두 값 이 모두 알파벳 이 면 소문자 로 바꿔서 list 1 에 저장 
 for i in range ( 0 , len ( str 1 ) - 1 ) : 
 if str 1 [ i : i + 2 ] . isalpha ( ) : list 1 . append ( str 1 [ i : i + 2 ] . lower ( ) ) 
 # 위 의 str 1 에 했 던 작업 을 str 2 에 동일 하 게 적용 
 for i in range ( 0 , len ( str 2 ) - 1 ) : 
 if str 2 [ i : i + 2 ] . isalpha ( ) : list 2 . append ( str 2 [ i : i + 2 ] . lower ( ) ) 
 # 다중 집합 이 아닌 경우 에 는 교집합 / 합집합 으로 계산 
 # 단 , 분모 가 0 이 어서 try 가 실패 하 는 경우 에 는 65536 출력 
 return int ( answer * 65536 ) 
 return 65536 
 # 다중 집합 의 경우 
 # 1 . list 1 의 원소 와 list 2 의 원소 에 대해서 Counter 를 계산 
 # 2 . 계산 한 Counter 의 key 를 전부 참조 하 면서 긴 값 은 union 에 짧 은 값 은 intersection 에 저장 
 # 단 , 둘 중 하나 에 만 있 는 경우 는 union 에 만 저장 ( except 부분 ) 
 # 위 와 마찬가지 로 분모 가 0 인 경우 에 는 65536 출력 
 for i in set ( list ( clist 1 . keys ( ) ) + list ( clist 2 . keys ( ) ) ) : 
 # 다중 집합 에서 도 두 개 의 집합 에 만 포함 되 는 경우 는 긴 쪽 은 union , 짧 은 쪽 은 inter 에 저장 
 # 긴 값 을 찾 아서 긴 값 을 union , 짧 은 값 을 inter 에 저장 
 if clist 1 [ i ] > clist 2 [ i ] : 
 # 다중 집합 에서 도 하나 의 집합 에 만 포함 되 는 경우 는 union 에 만 저장 
 위 와 같 은 코드 를 단순 하 게 계산 
 for 문 을 list comprehension 으로 대체 
 분모 가 0 인 케이스 를 앞 으로 빼내 서 try , except 를 두 번 할 필요 가 없 었 음 
 각각 의 list 에서 counter 를 만드 는 게 아니 라 합집합 과 교집합 에서 counter 를 만 듬 
 # 두 칸 씩 쪼갠 값 이 모두 문자 이 면 str 1 , str 2 에 append 
 # 합집합 과 교집합 계산 
 # 합집합 이 0 이 면 65536 출력 
 # 교집합 하 고 합집합 의 counter 를 따로 계산 
 return math . floor ( ( gyo _ sum / hap _ sum ) * 65536 ) 
 출처 : 프로그래머 스 코딩 테스트 연습 , https : / / programmers . co . kr / learn / challenges 
 ' EDA Study > 알고리즘 ' 카테고리 의 다른 글 
 [ 프로그래머 스 ] 오픈 채팅 방 / 파이썬 ( 2 ) 
 [ 프로그래머 스 ] [ 1 차 ] 캐시 / 파이썬 ( 0 ) 
 [ 프로그래머 스 ] [ 1 차 ] 뉴스 클러스터 링 / 파이썬 ( 2 ) 
 [ 프로그래머 스 ] 예상 대진표 / 파이썬 ( 0 ) 
 [ 프로그래머 스 ] 영어 끝 말 잇 기 / 파이썬 ( 0 ) 
 [ 프로그래머 스 ] 소수 만들 기 / 파이썬 ( 0 ) 
 뉴스 클러스터 링 , 코딩 테스트 , 파이썬 , 프로그래머 스 
 ' EDA Study / 알고리즘 ' 관련 글 
 [ 프로그래머 스 ] 오픈 채팅 방 / 파이썬 
 [ 프로그래머 스 ] [ 1 차 ] 캐시 / 파이썬 
 [ 프로그래머 스 ] 예상 대진표 / 파이썬 
 [ 프로그래머 스 ] 영어 끝 말 잇 기 / 파이썬 
 2020 . 06 . 23 07 : 33 신고 
 2020 . 06 . 23 12 : 50 신고 
 전체 : 84 , 976 
 [ 프로그래머 스 ] [ 1 차 ] 뉴스 클러스터 링 / ⋯( 2 ) 초코 오호 힛 
 [ 프로그래머 스 ] JadenCase 문자열 만들 ⋯ 초코 오호 힛 
 Dataprep . eda : Accelerate your EDA ( E ⋯( 2 ) 초코 오호 힛 
 [ 프로그래머 스 ] 기능 개발 / 파이썬 초코 오호 힛 
 작년 에 는 졸업 까지 학기 가 남 아서 진행 ⋯ 오호 힛 05 . 06 
 안녕 하 세요 현우 님 . 카카오 아레나 4 등 ⋯ 민영 05 . 05 
 죄송 하 지만 데이터 가 어떻게 생긴 지 몰 ⋯ 오호 힛 04 . 15 
 안녕 하 세요 . 글 을 확인 하 고서 한 번 사용 ⋯ Sun 04 . 15