본문 바로가기

부트캠프 일지

부트캠프 9일차 후기

오늘로 코드카타 .LV1을 다 풀었다. 즉, 3일간 아침 1시간 동안, 30문제를 풀었다.

 

오늘 코드카타로 배운 것은 Kotlin에서도 array에 + 연산자를 적용해서 뒤에 원소를 추가할 수 있다는 것이다. 어제 구글링해서 이 정보를 놓쳐서 다소 고생했었지만, 겨우 정보를 찾아서 기쁘다.

 

간만에 꽤 길게 팀원분들과 과제에 대해 논의를 가지는 시간을 가져보았다. 내가 팀원 분의 코드를 보고 오류를 고치기도 했지만, 다른 팀원 분이 나보다 해설을 더 잘하셔서 생각보단 내가 말을 많이 하지 않은 것 같다. 그래도 다른 팀원분들의 코드를 리뷰해보는 좋은 시간이 되었다.

 

그리고 심화과제를 어느정도 마무리를 지었다.LV4까지 구현을 했고 대충 실행해 보았을 때, 작동도 된다.

하지만, 디버깅 작업을 다소 게을리해서 버그가 있을 수 있고, 실전에서는 못 써먹을 것 같다. 내가 익숙치않은 Kotlin을 사용해보기 위한 목적을 위한 프로그램이라서, 다소 적절치 않은 알고리즘과 자료구조를 사용하였기에, 시간복잡도 면에서나 공간복잡도면에서나 성능이 좋지 않다.

 

단적인 예로, 보통 탐색 알고리즘을 사용하면 O(1)이나, O(log N) 정도가 걸리는데, 내가 만든 이 심화과제 프로그램은 O(N)의 시간 복잡도를 지닌다. 즉, 자료양이 많을 수록 많이 비효율적이게 된다. 호텔 예약을 한 사용자로 예약 정보를 조회하는 기능이 이 예시에 알맞다.

 

가장 시간을 많이 소비한 곳은 Calendar 부분이다. 어제도 여기서 시간을 보냈는데, 오늘도 여기서 시간을 보내고야 말았다. 어제보단 더 나았지만... LV4에서 예약을 취소할 때, 체크인까지의 시간과 오늘까지의 시간의 차이에 따라 돌려받는 금액을 달리하는 부분이였는데, 나는 여기서 Calendar.getInstance().add(Calendar.DATE, 날짜차이)와 before 함수를 사용해서 취소 시의 금액 비율을 달리하는 부분을 구현하하다. 하지만, 내가 착각을 해서 Calendar.getInstance().add(Calendar.DATE, 날짜차이)가 Calendar 인스턴스를 반환하는 것 처럼 사용하였다. 그래서 계속 예약 체크인 시간을 달리해도 똑같은 비율이 나왔고, 내가 before, after을 잘못 사용한 줄 알고 그 쪽만 바꾸다 보니 시간이 지나가버렸다. 결국 println( Calendar.getInstance().add(Calendar.DATE, 날짜차이))가 UInt가 나오는 것을 보고나서야, 내가 잘못 썼다는 것을 인지하게 되었다. 다음엔 구글링을 통해 배운 함수는 더 알아보고 사용해야겠다...

 

어찌되었든 이렇게 심화과제도 마무리지었는데... 내일 무엇을 해야할지가 고민이 된다. 캠프 측에서 기초과제의 해설 강의를 준비한다곤 하는데, 솔직히 그것을 봐도 내 코드에서 달라질 건 별로 없어보이고, 새로울 것도 없어보여서 해당 강의를 봐도 딱히 할 것이 없어보인다. 또한, 다음 주에 무엇을 할지가 궁금해진다. 내 기준에서 비동기는 나름 꽤 심화과정인데, 이게 Kotlin 강의 1주차에 나왔다. 그럼 다음 주엔 도대체 무엇을 가르칠지 의문이 든다. 어쨋든 오늘은 여기까지.

내일은... 굳이 할 게 없으면 지난 주 처럼 알고리즘 문제 해설이라도 해야겠다.

 

덤) 심화과제 깃허브 주소: https://github.com/tlsgkdns/BootCamp/tree/main/Homework/hotelReservation/src/main/kotlin

'부트캠프 일지' 카테고리의 다른 글

부트캠프 11일차 후기.  (1) 2023.12.11
부트캠프 10일차 후기  (1) 2023.12.08
부트캠프 8일차 후기.  (1) 2023.12.06
부트캠프 7일차와 배운 것  (2) 2023.12.05
부트캠프 6일차와 배운 것  (1) 2023.12.04