러스트로 알고리즘 테스트를 풀어봅시다
왜 러스트?
개인적으로 러스트로 알고리즘 문제를 푸는 건 좋은 선택이라 생각합니다.
- 아래의 다양한 자료구조를 빌트인으로 제공합니다.
- Vector
- VecDeque
- LinkedList
- HashMap
- HashSet
- BtreeMap
- BtreeSet
- BinaryHeap
- 유용한 이터러블과 빌트인 고차함수들이 있습니다.
- 일단 이터러블로 변환하면 뭐든지 가능하다는 장점이 있습니다.
- 이 과정은 당연히 정적 타입으로 이루어지기에 실수가 줄어듭니다.
- 튜플과 패턴 매칭 문법이 훌륭하고 표현식입니다.
()로 만드는 튜플은 어떤 타입, 어떤 길이로도 가능하여 유용합니다.match문법은 튜플조차 패턴 매칭을 해내기에 어떤 조건도 직관적으로 표현할 수 있습니다.if,match, 심지어loop가 값을 반환할 수 있어 유연하게 작성할 수 있습니다.
- 메모리를 효율적으로 재사용하고 반납합니다.
- 메모리를 어느정도 막 써도 용서받을 수 있습니다.
- 알고리즘 테스트 과정에서 메모리로 인한 실패 가능성이 줄어듭니다.
- 소유권에 익숙하면 좋지만 그렇지 않아도 좋습니다.
- C++의
&(레퍼런스) 정도로 알고 있어도 무리가 없습니다. - 너무 큰 객체가 아니라면
clone()메서드로 복사값을 넘겨줘도 됩니다. - 솔직히 어지간하면 소유권으로 에러가 나는 케이스가 적습니다.
- C++의
변수 할당
불변(immutable)
let a = 123;러스트는 기본적으로 할당되는 변수는 불변입니다. 해당 변수, a는 값을 변경할 수 없습니다. a = a + 3나 a = 100같은 재할당을 할 수 없습니다. 이 불변성은 변수에 할당된 값에도 동일하게 적용됩니다. 예를 들어 Vector나 HashMap을 할당하게 되면 값을 추가하거나 삭제할 수 없게 됩니다.
