[NeetCode/Python] Find Target in Rotated Sorted Array
·
Algorithm/NeetCode
문제 링크: https://neetcode.io/problems/find-target-in-rotated-sorted-array NeetCode neetcode.io 굉장히 특이한 문제였다.O(n)으로 하면 풀기 쉽지만 O(log n)의 시간 복잡도로 문제를 풀라고 되어있다.딱 보자마자 binary search가 떠올랐는데 문제는 문제 조건이다. binary search는 알다시피 정렬된 배열에서 사용하는 sort 알고리즘이다.하지만 이 문제는 기존 정렬 배열에서 특정 횟수만큼 rotate된 배열을 input으로 두었다.binary search를 활용하여 푸는 문제들은 봤어도 이렇게 응용한 문제는 처음봐서 굉장히 신선했다.- 풀이 찾아 해매기1. 처음에는 기존 sorted array에서 rotate가 된..
[LeetCode/Python] 1492. The kth Factor of n
·
Algorithm/LeetCode
n의 약수를 찾고 그 중 k번째 숫자를 리턴하는 문제이다.간단한 문제였다. class Solution: def kthFactor(self, n: int, k: int) -> int: divisor = set([]) for i in range(1, int(n**(1/2)) + 1): if (n % i == 0): divisor.add(i) divisor.add(n // i) if k > len(divisor): return -1 return sorted(list(divisor))[k-1] 시간 복잡도약수를 구할 숫자: N=> O(1/2N)  다른..
[Go] util 함수 개발기 - klaytn 패키지의 unpack 함수에서 abi 의존성 제거하기
·
Project
이력서를 정리하면서 내가 많은걸 배웠던 버그 리폿팅 & 기능 개발에 대해서도 같이 정리하는 편이다.그 중 블로그에 올려도 괜찮겠다 싶은 사례가 있어서 가져왔다. 이것말고도 더 많지만 아직 글이 정리가 안되어서 다듬어지면 또 가져와보겠다..ㅎ 3문단으로 이 글을 요약하자면 아래와 같다. [Situation]- RPC 통신으로 받은 데이터를 바로 프로젝트 안에서 사용하는 변수에 할당해주는 unpack 함수 개발 필요(unpack 함수를 지원하던 패키지를 확장성 문제로 사용하지 않게됨)[Task]- 기존 사용하던 외부 패키지의 함수는 ABI 규격을 이용해 변수에 알아서 할당을 해주었음. 그러나, gateway 서버를 사용하는 현재 프로젝트 구조상 ABI를 참고할 수 없음- 현재 모든 서버가 공통적으로 RPC ..
[Go] Decimal decoder : Decimal을 MongoDB에 바로 String으로 저장
·
Language/Go
Go 서버에서 mongoDB에 데이터를 넣을 때 추가할 수 있는 신기한 기능(?)을 리팩토링 코드 리뷰를 받으면서 알게되어 그 내용을 정리하여 글을 쓰고자 한다.리뷰받은 코드는 다음과 같다.types.DataToUpdateInMongo{ ... TotalTradingVolume: totalTradingVolume.String() ...} 여기서 TotalTradingVolume 엄청나게 큰 숫자 값(블록체인 서비스다보니 기본 단위가 10^18 이기 때문)이다. 이래저래 사칙연산도 필요하다 보니 decimal.Deciaml 타입인 totalTradingVolume을 변수로 계산을 마친 후, 이제 mongo db 저장을 위해 최종 구조체에 값을 저장하려고 하는 코드이다. mongo에 이..
[Go] encoding/json 패키지 - json.Decoder, Unmarshal & io.ReadAll
·
Language/Go
회사 프로젝트에서 2가지 방법으로 http response를 읽고 decode 하고 있다는 걸 발견했다. 둘 다 제대로 서비스가 동작하고 있는데 내부 동작이 어떻게 다른지 차이점이 궁금해서 공부해보았다.json.Decoder, Decode, Unmarshal 그리고 io.ReadAll 을 중심으로 살펴볼 예정이다.🟡 코드 비교우선 코드부터 살펴보자.두 코드 모두 client.Do()를 이용해 response(*http.Response 타입)를 가져온다.차이점은 response body(io.ReadCloser 타입)를 읽고 원하는 go 변수에 값을 넣어주는 방법이다. if resp, err := client.Do(req); err != nil { return err} else if body, e..
[실수(Real Number)] 부동 소수점과 오차
·
Computer Science/Data Structure
실무에서 소수점을 중요하게 다루는 작업이 많이 이뤄진다. 실수 계산의 정확도가 떨어지는 경우를 발견하고, 해결하는 작업을 하면서 다시금 부동 소수점에 대해 공부를 하게 되었고 이를 정리한 글이다. 컴퓨터는 0과 1로 이루어진 기계어를 사용한다. 인간은 수를 표현할 때 기본적으로 10진법을 사용하지만, 컴퓨터는 0과 1을 사용한 2진법을 사용한다. 그러므로 컴퓨터가 수를 표현하는 법에 대해서 얘기하려면 10진수를 2진수로 바꾸는 방법에 대해 알아둘 필요가 있다. 이진 기수법 0, 1, 10, 11, 100, 101, 110, 111, 1000, ... 이런 식으로 10진수 기준으로 2가 나올 차례가 되면 2를 쓰는 대신 자릿수를 늘려주는 것이다. 10진수에서는 10^n에 해당하는 수가 될 때마다 자릿수가 ..