본문 바로가기

전체 글657

[leetcode][1008] Construct Binary Search Tree from Preorder Traversal 문제 : https://leetcode.com/problems/construct-binary-search-tree-from-preorder-traversal/ 이진 탐색 트리를 전위순회한 결과 배열을 입력값으로 받을 때, 이진 탐색트리를 구한 뒤 루트를 반환하라. 이진탐색트리는 왼쪽 자식 서브트리들의 노드는 루트 노드보다 작고, 오른쪽 자식 서브트리들의 노드들은 루트 노드보다 크다. 이를 이용해서 왼쪽 자식들과 오른쪽 자식들을 구분할 수 있다. 예를 들어, [8,5,1,7,10,12] 일때. 전위 순회이므로 8은 루트가 된다. 8 이후의 배열들 중 8보다 작은 값들은 [5, 1, 7] 이고 8보다 큰 값들은 [10, 12] 이다. 전위 순회이므로 나눈 배열들 중 가장 앞에 있는 요소가 루트의 왼쪽, 오른.. 2020. 4. 20.
[Codejam][2020][QR] 4. ESAb ATAd 문제 : https://codingcompetitions.withgoogle.com/codejam/round/000000000019fd27/0000000000209a9e B 개의 비트 배열이 있다. 사용자는 1과 B 사이의 비트 위치를 질문하고 해당 위치의 비트를 응답받는다. 이 기계는 1, 11, 21 ... 등 일의 자리가 1인 쿼리 횟수 번째에는 양자 변동을 일으킨다. 즉, 1, 11, 21 .. 번째 질문에는 응답하기 전 양자 변동이 일어난 후 변동의 결과를 기준으로 응답한다. 양자 변동은 1/4의 확률로 아래 4가지 중 하나가 발생한다. 1. 모든 0은 1로, 1은 0으로 변환. 2. 배열의 위치가 반전된다. ex) 1번째 비트는 마지막 비트와 교체. 2번째 비트는 마지막에서 2번째 비트와 교체.. 2020. 4. 19.
[leetcode][33] Search in Rotated Sorted Array 문제 : https://leetcode.com/problems/search-in-rotated-sorted-array/ 오름차순으로 정렬된 중복되지 않은 요소들을 가진 배열이 있다. 이 배열을 어떤 인덱스에서 회전시킨다. 예를 들어, [0, 1, 2, 3, 4,5,6,7]은 [4, 5, 6, 7, 0, 1, 2, 3] 가 될 수도 있다. 회전된 배열이 주어질 때, 이 배열에서 target 값이 어디있는지 인덱스를 찾아라. 없다면 -1을 반환. 단, 시간복잡도는 O(logN) 이어야 한다. 이분 탐색으로 풀었다. 배열 [4 5 6 7 8 0 1] [5 1 2 3 4]로 예를 들어보자. 중간 인덱스를 기준으로 왼쪽과 오른쪽이 있고 이들이 오름차순인지 내림차순인지 구한다. 이 때, 오름차순과 내림차순은 배열을.. 2020. 4. 19.
[codejam] interactive local 테스트 https://codingcompetitions.withgoogle.com/codejam/faq#interactive-problems interactive_runner script 를 클릭해서 interactive_runner.py를 다운받습니다. 이를 실행하기 위해 python을 깔아둬야합니다. 코드를 한 번 보겠습니다. 저런식으로 사용한다고 하는군요. https://codingcompetitions.withgoogle.com/codejam/round/000000000019fd27/0000000000209a9e Code Jam - Google’s Coding Competitions Put your coding skills to the test as you work your way through mult.. 2020. 4. 18.
[Codejam][2020][QR] 3. Parenting Partnering Returns 문제 : https://codingcompetitions.withgoogle.com/codejam/round/000000000019fd27/000000000020bdf9 각 활동의 시작, 종료 시간이 주어지면 Jamie, Cameron이 활동을 나눠서 한다고 하자. 활동 중 다른 활동을 중복으로 수행은 불가능하다. (한 번에 하나의 활동만 가능) 두 사람이 모든 활동을 나눠가질 수 없을 때는 IMPOSSIBLE을 출력하자. 가능하다면 각 활동을 수행하는 사람의 이니셜 배열을 구하자. greedy의 대표 문제. 각 활동들의 시작 시간을 기준으로 오름차순 정렬한다. 정렬하면 활동들의 순서가 뒤섞이므로 배열에 인덱스를 추가하고 정렬한다. Jamie, Cameron 를 순서대로 활동 중인지 체크한다. 이를 위해.. 2020. 4. 18.
[Codejam][2020][QR] 2. Nesting Depth 문제 : https://codingcompetitions.withgoogle.com/codejam/round/000000000019fd27/0000000000209a9f 숫자 문자열이 주어질 때, 이를 엄격하게 괄호로 묶어서 반환하라. 이 때, 괄호의 개수는 최소로 하고 숫자는 일의 자리로 판단하라 (ex. 10 은 1과 0으로 인식되지 10으로 인식되진 않는다.) 엄격하게 괄호로 묶는 방법은 숫자만큼 해당 문자를 괄호로 감싸면 된다. example) 0000 -> 0000 101 -> (1)0(1) 111000 -> (111)000 1 -> (1) 1324 -> (1((3)2((4)))) 문자열을 탐색하면서 이전 숫자와 현재 탐색중인 숫자의 차이를 구한다. 1. 이전 숫자가 현재 숫자보자 작다면, (열.. 2020. 4. 18.