해시(Hash) 알고리즘 쉽게 이해하기

2024. 6. 20. 19:05네카라쿠배 취준반 - 프로그래머스 문제 풀이

자세한 내용은 영상으로 확인하세요! :)


프로그래밍을 배우다 보면 많은 분들이 해시(Hash) 알고리즘에 대해 질문하고 헷갈려합니다. 그만큼 자주 나오는 개념이지만 쉽게 이해하기 어려운 부분도 있습니다. 오늘은 코딩 테스트를 준비하는 분들이 꼭 알아야 할 해시 개념에 대해 정리해 보겠습니다.

해시(Hash)란 무엇인가?

해시는 키(Key)와 값(Value) 형태를 갖는 하나의 자료 구조입니다. 예를 들어, 전화번호부를 생각해봅시다. 우리가 친구의 전화번호를 찾기 위해 이름을 입력하면 해당 친구의 전화번호가 나옵니다. 여기서 이름이 키(Key)이고, 전화번호가 값(Value)입니다.

해시가 등장하기 전에는 배열(Array)이라는 자료 구조만 사용했습니다. 배열은 오직 정수로만 접근할 수 있기 때문에, 문자열을 기반으로 데이터를 찾을 수 없었습니다. 해시를 사용하면 문자열이나 다른 데이터 타입으로 자료 구조에 접근하고 데이터를 관리할 수 있습니다.

해시의 특징

해시에는 여러 가지 특징이 있지만, 코딩 테스트를 위해서 가장 중요한 점은 모든 데이터 타입으로 접근이 가능하다는 것입니다. 예를 들어, '완주하지 못한 선수'라는 문제가 있다고 가정해봅시다. 마라톤에 참가한 선수 중 한 명이 완주하지 못했을 때, 이를 찾는 문제입니다. 해시를 사용하면 이 문제를 간단하게 해결할 수 있습니다.

해시를 활용한 문제 해결

완주하지 못한 선수 찾기

해시 맵(Hash Map)을 만들고, 각 선수의 이름을 키로 사용하여 완주 여부를 값으로 저장합니다. 이렇게 하면 쉽게 완주하지 못한 선수를 찾을 수 있습니다.

신고 결과 받기

게시판 사용자들 중에서 신고당한 사람들을 기준으로 신고자 목록을 관리하는 문제에서도 해시를 사용할 수 있습니다. 신고당한 사람의 이름을 키로, 신고자 목록을 값으로 저장하면 됩니다.

옷의 종류 세기

옷의 종류에 따라 각각 몇 개의 옵션이 있는지 세는 문제에서도 해시를 활용할 수 있습니다. 옷의 종류를 키로, 옵션의 개수를 값으로 저장하면 됩니다.

해시의 중요한 함수들

1. get(key): 키가 존재하면 해당 키의 값을 반환합니다.
2. containsKey(key): 키가 존재하는지 확인합니다.
3. getOrDefault(key, defaultValue): 키가 존재하면 값을 반환하고, 존재하지 않으면 기본값을 반환합니다.

이 세 가지 함수만 알아두면 대부분의 해시 문제를 해결할 수 있습니다.

결론

해시는 키와 값을 기반으로 데이터를 관리하는 자료 구조로, 다양한 문제를 효율적으로 해결할 수 있게 해줍니다. 문자열을 기반으로 정보를 기록하고 관리해야 할 때는 해시를 사용하는 것이 좋습니다.

오늘 정리한 내용을 바탕으로 해시 문제를 다시 풀어보시고, 그래도 잘 이해되지 않는다면 추가 자료를 참고하면서 연습해 보세요. 해시 문제의 유형은 정해져 있기 때문에 몇 가지 문제만 풀어보면 쉽게 감을 잡을 수 있을 것입니다.

코딩 테스트 준비, 화이팅 하세요! 다음 콘텐츠에서 또 뵙겠습니다.