2026 골드만삭스 코딩 인터뷰 실제 질문과 솔루션
Source: Dev.to
Problem 1: Transaction Segments
Problem Summary:
(details omitted in the original post)
Key Idea:
(details omitted in the original post)
Problem 2: Efficient Tasks
Problem Summary:
(details omitted in the original post)
Key Idea:
(details omitted in the original post)
Problem 3: Design HashMap
Problem Statement
다음 연산을 지원하는 간단한 해시맵을 구현하세요:
MyHashMap()– 자료구조 초기화put(key, value)– 키‑값 쌍을 삽입하거나 업데이트get(key)–key에 연결된 값을 반환하고, 키가 없으면-1반환remove(key)– 키가 존재하면 삭제
Solution Idea
충돌을 처리하기 위해 체이닝을 사용합니다. 구조는 고정 크기의 버킷 배열을 가지고, 각 버킷은 리스트에 키‑값 쌍을 저장합니다.
- 해시 함수:
key % bucket_size - 충돌 처리: 리스트 기반 체이닝
- 연산: 각 버킷 내부에서 선형 탐색
Python Implementation
class MyHashMap:
def __init__(self, bucket_size: int = 1000):
self.bucket_size = bucket_size
self.buckets = [[] for _ in range(bucket_size)]
def _hash(self, key: int) -> int:
return key % self.bucket_size
def put(self, key: int, value: int) -> None:
idx = self._hash(key)
bucket = self.buckets[idx]
for i, (k, _) in enumerate(bucket):
if k == key:
bucket[i] = (key, value) # update existing
return
bucket.append((key, value)) # insert new
def get(self, key: int) -> int:
idx = self._hash(key)
bucket = self.buckets[idx]
for k, v in bucket:
if k == key:
return v
return -1
def remove(self, key: int) -> None:
idx = self._hash(key)
bucket = self.buckets[idx]
for i, (k, _) in enumerate(bucket):
if k == key:
bucket.pop(i)
return
Complexity
- 평균 시간: O(1) 각 연산당
- 최악 시간: O(n) (모든 키가 하나의 버킷에 충돌할 경우)
- 공간: O(n) 키‑값 쌍을 저장하기 위한 공간
Interview Tips
- 가장자리 경우(edge case)를 명확히 설명하는 데 집중하세요.
- 코딩하면서 사고 과정을 지속적으로 전달하세요.
- 재해싱(rehashing), 로드 팩터(load factor), 다른 충돌 해결 전략에 대한 후속 질문에 대비하세요.
- 배열, 동적 프로그래밍, 그리디, 디자인 등 다양한 카테고리의 LeetCode Medium 문제를 연습하세요.
Goldman Sachs 면접 준비에 행운을 빕니다!