Computer Science/자료구조

[6.19] 프로그래머스 코딩테스트 연습 - 완주하지 못한 선수(해시) (17/100)

토마토. 2021. 6. 19. 15:26

- 한 명의 선수를 제외하고 모두가 마라톤 완주함

- 참가자 배열 participant

- 완주한 배열 completion

- 완주하지 못한 사람 return하시오

- 동명이인 있을 수 있음

 

해시법을 어떻게 사용해야하지?

참고1 - [5.17] 03-4 해시법 복습 (재도전) (tistory.com)

 

[5.17] 03-4 해시법 복습 (재도전)

03-4 해시법 정렬된 배열에서 원소 추가하기 해시법 hashing - 데이터를 저장할 위치 = 인덱스를 간단한 연산으로 수행 hash table, hash function, bucket 해시 충돌 -> 체인법 : 해시값이 같은 원소를 연결 리

tomatolife.tistory.com

참고2 - 

해시 : 임의의 크기를 가진 데이터를 고정된 데이터의 크기로 변환시키는 것

해시 : 탐색이나 삽입시 위치를 바로 찾을 수 있음

완주하지 못한 사람에서 해시는? 

- 참가자 배열 participant

- 완주한 배열 completion

- 완주하지 못한 사람 return하시오

- 동명이인 있을 수 있음

필요한 것 : 참가자랑 완주자 사이의 비교? 

def solution(participant, completion):
    answer = ''
    for i in participant:
      #만약 이 요소가 completion에 있으면 pass해도 됨. 
      #없으면 answer
      if i in completion:
        completion.remove(i)
      else:
        answer = i
        break
    return answer

효율성 때문에 sort 이용함

def solution(participant, completion):
  answer = ''
  participant.sort()
  completion.sort()
  for i in range(0, len(participant)):
    if participant[i] != completion[i]:
      answer = participant[i]
      break
  return answer