오늘 한 일
느낀 점
🧩 CS 미션
- 처음 접하는 개념을 스스로 이해하고 미션을 수행해야되어 처음에는 할 수 있을까 겁났는데, 정말 좋은 팀원들의 도움으로 이해하고 1차 구현까지 완성할 수 있었다.
- 코드로 미션을 구현하는 것까지는 괜찮았는데 그 뒤에 체크포인트랑 추가로 생각해야 되는 문제들이 어려웠다. 아직 구현하는 것을 넘어서 효율성이나 확장성 등을 생각하는 힘이 약한 것 같다.
- 미션에 관련된 CS 개념 자체를 이해하느라 들여쓰기나 메서드 길이 등 클린코드에 많은 신경을 쓰지 못했다. 내일 코드 리뷰 시간 이후로 리팩토링을 진행하고 학습정리에 나온 추가 기능을 구현해 보아야겠다.
❓ Java 관련
- Java에서 미리 선언한 배열의 크기를 바꿀 수 없는 점이 불편한데 ArrayList만 쓰면 안되는지, 시간 복잡도 등에서 어떠한 차이가 있는지 궁금하다.
- 배열의 크기를 바꿀 수 없으니 아예 크게 선언해버리고 자유롭게 쓰는 방법도 있다는데 메모리가 낭비되니 뭔가 찝찝한 기분이다. 그렇다고 업데이트 될 때마다 배열을 새로 선언해서 값을 복사해 오는 건 너무 비효율적인 것 같다. 언제 배열을 쓰는 것이 효율적이고, 언제 ArrayList를 사용하는 것이 효율적인지 알아봐야겠다.
ArrayList가 Java에서의 연결 리스트인 줄 알았는데, 배열을 사용하여 리스트를 구현한 것 뿐이었다. 내부적으로 배열과 똑같이 작동하며 시간복잡도 또한 배열을 따른다.
https://velog.io/@janeljs/Java-Array-vs.-ArrayList-vs.-LinkedList