본문 바로가기

Star43

[leetcode][275] H-Index II 문제 : https://leetcode.com/problems/h-index-ii/오름차순으로 정렬된 양의 정수 배열이 주어진다고 하자. (let, 배열 크기 = N)이 배열은 논문들이고, 각 배열 값은 i번째 논문이 몇 개의 논문을 인용했는지를 나타낸다. 즉, arr[2] = 3이라면 2번째 논문은 3개의 논문을 인용하여 작성되었음을 의미한다.N개의 논문중 h개의 논문이 h개 이상의 논문을 인용하고 N-h개는 h개 이하를 인용하는 경우 h-인덱스라고 한다.배열의 가능한 h-인덱스 값 중 최대값을 구해라.이분 탐색으로 풀어보자. 어쨌든 h의 범위는 논문의 개수이다.l, r 은 배열의 시작인덱스, 종료인덱스로 잡자.m = (l+r)/2이다.h = N - m라고 하고 h가 정답이 가능한지 판단한다.문제 초반.. 2020. 6. 18.
[leetcode][201] Bitwise AND of Numbers Range 문제 : https://leetcode.com/problems/bitwise-and-of-numbers-range/ 0 이상 2147483647 이하인 수 m, n(m 앞에서부터 자릿수를 비교해봤을 때, 다른 비트가 나오는 경우는 이후의 비트들도 AND연산을 하면 결국 0이된다고 추측할 수 있다. (prefix를 구해야한다.) m=101011(43), n=101111(47)을 예로 들어보자. 두 수의 prefix는 101000(40)이다. (prefix는 101 이지만 실제로 알고싶은건 101000 이기 때문에 편의상 이렇게 표현) 101011에서 101111이 되기 위해서는 4번째 자리의 0이 1이 되기 위한 과정이 필요하다. 이 때 4번째 자리 이후의 비트들은 모두 0이 될것이다. 즉, 다른 비트가 .. 2020. 4. 24.
[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.
[leetcode][122] Best Time to Buy and Sell Stock II 문제 : https://leetcode.com/problems/best-time-to-buy-and-sell-stock-ii/ 주식 가격 배열이 주어진다. 어떤 주식을 샀을 때 해당 주식을 팔기 전까지는 주식을 구입할 수 없다고 하자. 주식을 사고 판다고 했을 때 얻을 수 있는 최대 이익은 얼마인가? 투 포인터로 해결했다. 처음에는 DP로 했었는데 이건 그렇게하면 TLE 난다. 다시 생각해보니 주식을 사고 나서 최대가를 찍었을 때 파는 거다. 주식가격이 상승 곡선이 시작하기 전 가장 최소값을 찍었을 때, 주식을 구입한다. 상승 곡선이 끝날 때, 주식의 가격이 최대가 됐을 때 주식을 판다. 주식을 판 다음 날부터 다시 위 과정을 반복한다. 이를 배열 끝날때까지 반복한다. 상승 곡선이 끝나기 전에 배열이 종.. 2020. 4. 6.
[Kickstart][2020][Round A] 4. Bundling 문제 : https://codingcompetitions.withgoogle.com/kickstart/round/000000000019ffc7/00000000001d3ff3 Pip는 N개의 문자열을 가지고 있다. 문자열들은 모두 대문자로만 이루어진다. Pip는 이 문자열들을 그룹화 시키려고 한다. 이 때, 각 그룹은 정확히 K개의 문자열들로 이루어진다. 각 그룹의 점수는 그룹에 속한 문자열들의 공통 prefix 길이다. 만들 수 있는 그룹들의 점수의 합의 최대값은 얼마인가. 문자열 배열, 공통된 Prefix.. 트라이를 써야될 것 같은 느낌이 든다. 일단 N개의 문자열들로 Trie를 만든다. 그룹들의 최대값을 만드려면 어떻게 해야하는지 먼저 고민해보자. 최대값을 만드려면 prefix가 커야한다. 즉, 트.. 2020. 3. 26.
[Kickstart][2020][Round A] 3. Workout 문제 : https://codingcompetitions.withgoogle.com/kickstart/round/000000000019ffc7/00000000001d3f5b Tambourine 씨는 N개의 휘트니스 프로그램 세션을 준비했다. i번째 세션은 M[i] 분 동안 진행될 것이다. 진행 시간은 반드시 증가한다. (M[i] < M[j], i < j) 휘트니스 프로그램의 난이도는 연속되는 세션의 진행시간 차이들 중 최대값이다. 그녀는 난이도를 낮추기 위해 최대 K개의 추가 세션을 추가하고자 한다. 이 때, 추가 세션들도 진행 시간은 반드시 증가해야한다. 기존 세션들에서 최대 K개의 세션을 추가한다고 할 때, 가능한 난이도의 최소값은 어떻게 되는가? 이분탐색 문제이다. 구하고자 하는 값이 난이도의 최소.. 2020. 3. 25.