이번주에는 전반적으로 코발트 과제에 집중했다. BigInteger 클래스를 구현하는 과제였는데 찾아보니 학교 과제로 많이 내는 것 같았다. 처음에는 무작정 자바의 BigInteger 클래스를 뜯어봐야겠다는 생각에 하나하나 코드를 이해하려 했지만 무리수였다. int 배열로 값을 저장해 비트로 연산하는 BigInteger의 경우 수학적인 로직이 거진 비트연산자여서 머리로 이해하기가 너무 어려웠다. 여기서 시간낭비를 많이 한 게 지금 와서 생각해보면 많이 아쉽다. 다음은 스트링으로 값을 저장해볼까 생각했다. 머리속으로 어떻게 시작할까 고민하다가 스트링으로 값을 저장하게되면 연산할땐 결국 스트링빌더를 써야할텐데 그 부분이 마음에 들지 않아 다시 배열로 돌아왔던 것 같다.

기존의 BigInteger 클래스는 int 배열 한 인덱스 안에 2^32만큼 값을 저장(int range인 2^31 - 1이 넘어도 오버플로우 나는거까지 계산한다)하는데 연산을 이해할때 너무 헷갈려서 구현하기 쉽게 한 인덱스 값에 1_000_000_000만큼 넣을 수 있게 했다.

우당탕탕 과제를 겨우 끝내고 보냈더니 정성스런 리뷰 + 질문이 왔다. 고민할거리를 던져주셔서 공부하는 계기가 됐다.

후기,,