Rust의 엔트리 API는 맵의 단일 엔트리에 대한 뷰를 제공해요. 맵은 HashMap 또는 BTreeMap일 수 있어요. 엔트리는 값이 있는 상태일 수도 있고 비어 있는 상태일 수도 있으며, API는 엔트리의 내용을 수정하는 메서드를 제공해요.
이 연습 문제에서는 HashMap과 entry API 메서드를 사용해 간단한 알고리즘 문제를 풀어요.
잡지 기사의 단어를 나타내는 &[&str] 타입과, 보내고 싶은 쪽지의 단어를 나타내는 &[&str] 타입이 주어졌을 때, 잡지에서 단어를 오려내 편지에 붙여 쪽지를 만들 수 있을까요?
참고:
먼저 다음과 같이 뼈대만 잡힌 함수 시그니처로 시작해요:
pub fn can_construct_note(magazine: &[&str], note: &[&str]) -> bool {
todo!()
}
다음과 같은 입력이 있다고 해봐요:
let magazine = "two times three is not four".split_whitespace().collect::<Vec<&str>>();
let note = "two times two is four".split_whitespace().collect::<Vec<&str>>();
assert!(!can_construct_note(&magazine, ¬e));
쪽지에는 "two"가 두 개 필요한데 잡지에는 한 번밖에 나오지 않기 때문에 함수는 false를 반환해요.
다음과 같은 입력은 성공해요:
let magazine = "Astronomer Amy Mainzer spent hours chatting with Leonardo DiCaprio for Netflix's 'Don't Look Up'".split_whitespace().collect::<Vec<&str>>();
let note = "Amy Mainzer chatting with Leonardo DiCaprio"
.split_whitespace()
.collect::<Vec<&str>>();
assert!(can_construct_note(&magazine, ¬e));
잡지에 쪽지에 필요한 단어가 모두 들어 있기 때문에 함수는 true를 반환해요.