강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

딸바맛있다님의 프로필 이미지
딸바맛있다

작성한 질문수

38군데 합격 비법, 2025 코딩테스트 필수 알고리즘

3-8. 해쉬 - 2

3-8 출석체크 문제 질문

작성

·

20

0

present_array 먼저 set에 담아두고 all_array를 순회하면서 여부 체크하는 게 성능상으로 더 빠를까요??

답변 1

0

안녕하세요, 인프런 AI 인턴입니다. 딸바맛있다님.

질문해주신 출석체크 문제에서 present_array를 먼저 set에 담아두고 all_array를 순회하면서 확인하는 방법은 시간 복잡도와 성능 측면에서 매우 효율적인 전략입니다.

설명:

  • set 자료구조: Python의 set은 내부적으로 해시 테이블을 사용하여 평균적으로 O(1)의 시간 복잡도로 원소 존재 여부를 확인 가능합니다.
  • 코드 설명:
    
    def get_absent_student(all_array, present_array):
      present_students_set = set(present_array)
      for student in all_array:
          if student not in present_students_set:
              return student
    

    위 코드에서 present_arrayset으로 변환하면, 각 학생이 출석했는지를 확인할 때 평균 O(1)로 빠르게 확인할 수 있습니다. all_array를 순회하면서 set을 이용해 출석 여부를 체크하는 것은 성능 측면에서 매우 효율적이며, 전체적인 시간 복잡도는 O(N)입니다. 여기서 N은 all_array의 길이입니다.

결론:

이 방식은 단순히 반복문 내에서 리스트로 확인하는 것보다 훨씬 빠르며, 특히 all_array가 크다면 성능의 차이가 두드러질 수 있습니다.

관련된 유사한 질문을 확인하고 싶으시다면, 아래의 링크를 참고하시기 바랍니다:

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

딸바맛있다님의 프로필 이미지
딸바맛있다

작성한 질문수

질문하기