트랙
/
Rust
Rust
/
연습 문제
/
잡지 오려내기
잡지 오려내기

잡지 오려내기

학습 연습 문제

소개

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, &note));

쪽지에는 "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, &note));

잡지에 쪽지에 필요한 단어가 모두 들어 있기 때문에 함수는 true를 반환해요.

GitHub에서 편집 링크가 새 창이나 탭에서 열려요
Rust Exercism

잡지 오려내기 문제를 시작해 볼 준비가 됐나요?

Exercism에 가입하고 Rust 트랙을 연습 문제 99개, 그리고 실제 사람의 멘토링과 함께 배우고 익혀 보세요. 모두 무료예요.