크기가 5만 이하인 배열 array가 있습니다. 여기서, 연속적인 부분 배열들을 생각할 수 있습니다. 이 부분 배열에 속해있는 수들을 모두 bit or을 합니다. 그렇게 해서 나온 결과값들을 벡터 res에 담습니다. 벡터 res의 중복을 제거했을 때, res에는 몇 개의 수가 들어 있을까요? 즉, 연속적인 부분 배열들의 결과값이 될 수 있는 수의 갯수는 몇 개일까요? 단, 배열 안에 있는 수는 0이상, 10^9 이하의 정수 입니다. 예를 들어, [1, 3, 2]를 생각해 봅시다. 이 경우, 결과값이 될 수 있는 수는 1, 2, 3. 이렇게 3개입니다. 어떻게 풀면 좋을까요? 일단, 0이상, 10^9 이하의 정수라는 것은, 있을 수 있는 최대 상태 수가 30개라는 것입니다. 그러면, lo번째 위치에, 어떠..
전체 글 검색 결과
leetcode 338번, Counting bits를 풀어보도록 합시다. 1부터 n까지 켜진 비트의 수를 구하려고 합니다. 그런데 이것을 O(n)에 구하려고 합니다. 어떻게 하면 좋을까요? n이 100만까지 있을 때, 20개의 비트를 일일히 보는 것은 꽤 큰 낭비입니다. 이를 어떻게 하면 좋을까요? 이전에 계산했던 정보를 다시 재사용하는 방법은 없을까요? 먼저 dp[x]를 위와 같이 정의합니다. 그러면, dp[0]은 0일 겁니다. 0을 2진수로 표현하면 00..00입니다. 비트 값이 1인 것이 없습니다. 따라서, dp[0]의 값은 0으로 초기화를 합니다. 그러면, dp[x]의 값은 어떻게 구하면 좋을까요? 6을 생각해 봅시다. 이것은 2진수로 0110로 나타낼 수 있습니다. 켜져 있는 비트 1의 수가 몇..
DATETIME, TIME의 차이를 계산할 수 있는 방법이 없을까요? mysql에는 timediff 함수가 있습니다. 이것은 2개의 datetime/time의 차이를 time 자료형으로 리턴해 주는 함수입니다. 당연하게도, 2개의 자료형은 같아야 합니다. timediff(T1,T2); T1과 T2의 차이를 돌려줍니다. 만약에 T1보다 T2가 더 나중에 있는 시간이라면 -hh:mm:ss를 돌려줍니다. 먼저 아래 쿼리를 봅시다. 이것은 time형 2개를 받았습니다. T1이 2시 3분 4초, T2가 2시 3분 2초입니다. T1이 T2보다 나중에 있는 시간이므로, 결과 값에 -가 붙지 않습니다. T1이 T2보다 얼만큼 나중에 있나요? 2초만큼 나중에 있습니다. 따라서, 00:00:02가 출력이 됩니다. 출력에 ..
이번 시간에는 명령행 인자인, argc와 argv를 해 보도록 하겠습니다. 사실, 이것이 무엇인지 생소할 수도 있습니다. 아래 ls 명령어를 봅시다. Linux에서 ls는 디렉토리에 있는 파일들에 대한 정보를 출력해 주는 명령어인데요. ls 명령어를 썼는데, 여기서 -a라는 옵션을 추가로 주었어요. 즉, 실행 파일을 실행할 때 옵션을 추가로 받을 수 있다는 의미입니다. 오늘은 이것들을 가지고 간단하게 놀아보도록 하겠습니다. 먼저, 다음과 같이 실행을 했다고 생각해 봅시다. 초록색으로 칠한 것은 실행 파일 명입니다. work를 실행을 한 것입니다. 그리고 보라색으로 칠한 것은 옵션을 의미하는데요. 보라색의 갯수는 5개임을 알 수 있습니다. argc는, 이 보라색의 갯수 + 1과 같습니다. 실행 파일명, 명..
최근댓글