목차

알고리즘; 문자열 해싱 #1

🗓️


오늘 한 것

알고리즘

  • 교집합
  • 슬라이딩 윈도우

습득한 지식

프로그래머스 Hash; 완주하지 못한 선수

  • 참가자와 완주자의 명단에서 완주하지 못한 참가자를 가져온다.
  • 두 리스트의 교집합을 증명하는 과정에서 완주자와 비교해 참가자를 반환한다 (완주하지 못한 참가자)
  • 소스코드
def solution(participant, completion):
    participant.sort()
    completion.sort()
    r = None
    for p, c in zip(participant, completion):
        if p != c:
            return p
    if r is None:
        r = participant[-1]
    return r

프로그래머스 Hash; 전화번호 목록

  • 리스트 내 원소에 대해 슬라이딩 윈도우로 비교하고 요구조건에 따라 boolean을 반환한다.
  • 소스코드
def solution(phone_book):
    phone_book.sort()
    print(phone_book)
    for i in range(len(phone_book) - 1):
        if phone_book[i] in phone_book[i+1]:
            return False
    return True

프로그래머스 Hash; 위장

  • 첫번째 시도 : dictionary를 만든 후 set으로 원소 생성 → 실패
  • 두번째 시도 : list 원소를 단순 조합하여 set으로 요구조건 원소 생성 → 테스트 케이스는 통과하지만 효율성에서 모두 탈락
  • 세번째 시도 : 순서에 상관없는 조합(combination) 조건 생성 → 여기까지 진행중
  • 참고 할만한 고등수학 : 부분집합, 순열과 조합

궁금한 점

  • 순열, 조합 수1 공부하자..

다음에 진행할 내용

  • Hash; 위장 문제 완성
  • 정렬1,2 문제 완성 및 해설