개발자의 길/Algorithm 13

[Algorithm] 해커랭크 - Hash Tables: Ransom Note

https://www.hackerrank.com/challenges/ctci-ransom-note/problem 한 납치범이 몸값을 요구하는 편지를 작성하기 위해 주어진 잡지의 단어를 오려내고자 하는데, 원하는 편지를 주어진 잡지의 단어만으로 작성할 수 있는지 답을 내는 문제다. 생각난 방법은 다음과 같다. 1. 이중 for문을 통해 전수조사2. 해시 자료구조를 통해 O(n)의 시간으로 조사 (n : ransom-note의 단어 갯수) 1번 방법은 주어진 벡터 2개를 받아 일일히 검사하고, 같은 단어가 나올 때 마다 magazine 벡터에서 해당 원소를 제거하는 방식으로 알고리즘을 구현하였다. 1234567891011121314151617bool ransom_note(vector magazine, vec..

[Algorithm] 해커랭크 - Trees: Is This a Binary Search Tree?

https://www.hackerrank.com/challenges/ctci-is-binary-search-tree/problem 주어진 Tree 자료구조가 BST(Binary Search Tree) 인지 판별하는 문제다. 처음에는 단순히 자료의 저장 방법에만 신경을 쓰며 풀어서 오답이 나왔다. 자료의 저장 방법은 데이터가 들어있는 노드의 값보다 작은값은 왼쪽 노드로, 큰 값은 오른쪽 노드로 진행하면서 비어있는 노드를 찾아 저장하는 방법이다. 오답이 나오고 다시 생각을 해 보니 단순히 각 노드의 Left, Right 값의 대소관계만을 고려하면 진짜로 BST인지 판별이 불가능 하다는 생각이 들었다. BST는 특정 노드 A의 왼쪽 서브트리의 모든 값은 A의 데이터값보다 작아야 되며, 오른쪽 서브트리의 값은 ..

[Algorithm] 해커랭크 - Arrays: Left Rotation

https://www.hackerrank.com/challenges/ctci-array-left-rotation/problem 주어진 배열을 Left Rotation 시키는 아주 기본적인 문제이다. 예전 모 기업의 코드테스트 중 이 오퍼레이션이 나왔었는데, 첫문제로 주어져 긴장이 안풀려서 그런지 동작은 되는 엉망진창인 코드를 제출한 기억이 있다. 그래서 포스트로 작성해 본다. 1234567891011121314vector array_left_rotation(vector a, int n, int k) { int tmpValue = 0; int moveValue = a[0]; int dindex = 0; vector returnarray(n); for(int i = 0; i c, c -> d 순으로 순차적으..

반응형