본문 바로가기

해시 맵4

[Programmers] 전화번호 목록 https://school.programmers.co.kr/learn/courses/30/lessons/42577 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 해결 과정 착안 전화번호 목록에 있는 모든 번호들을 해시 테이블(hash table)에 저장한 다음, 각각의 전화번호들에 대해 앞에서부터 1, 2, $\cdots, $ 전체 글자 만큼의 접두사에 해당하는 전화번호가 해시 테이블에 존재하는지 확인한다. 구현 해시 테이블의 역할을 수행할 컨테이너로 std::unordered_map 형식의 컨테이너를 활용하였다. [스포 주의] 아래 '더보기'를 누.. 2024. 1. 7.
[Programmers] 의상 https://school.programmers.co.kr/learn/courses/30/lessons/42578 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 해결 과정 착안 코니가 가진 의상의 종류가 $i$ 개이고 각 종류별 의상 수를 $n_i$ 라고 하면, 종류별로 입지 않는 경우와 하나를 택해서 입는 경우가 존재할 수 있다. 이때, 모든 종류를 입지 않는 한 가지 경우를 제외하면 코니가 서로 다른 조합으로 옷을 입을 수 있는 경우의 수 $c$ 는 $$c = \prod_{i} n_{i} - 1$$ 이다. 구현 std::vector 형식으로 주어.. 2024. 1. 2.
[Programmers] 튜플 https://school.programmers.co.kr/learn/courses/30/lessons/64065 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 해결 과정 착안 중복되는 원소가 없는 튜플에 대한 집합 표현만 주어지므로, 집합 내에서 중복하여 많이 등장하는 숫자일수록 튜플의 앞에 위치하는 원소임에 착안하여 문제를 해결하고자 하였다. 구현 이를 구현하기 위해, 원소 별로 집합 내에서의 등장 횟수를 카운트할 때 std::unordered_map 클래스를 활용한 다음, pair 형식의 원소들을 std::vector 클래스로 옮겨 등장 횟수에.. 2023. 9. 25.
[Programmers] 영어 끝말잇기 https://school.programmers.co.kr/learn/courses/30/lessons/12981 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 해결 과정 착안 주어진 규칙에 따라 $i = 2, 3, ..., n$에 대하여, $i$번째 사람이 성공적으로 끝말잇기를 하는지 여부를 판단한다. 이때 이미 등장한 단어인지를 확인하는 과정을 위해 해시 맵(hash map) 자료 구조를 활용하여 문자열에 대한 탐색을 빠르게 수행하고자 하였다. 구현 해시 맵 자료 구조를 사용하기 위하여 std::unordered_map 클래스 및, 해당 클래스의.. 2023. 8. 27.