이번 주는 자바의 기초를 아주 넓게 훑은 한 주였다.
입력·출력, 변수와 자료형, 연산자, 조건문, 반복문까지 흐름 제어를 익혔고,
실제로 많이 쓰이는 기본 자료구조들의 용도와 차이를 정리했다.
특히 인상 깊었던 건
일관성이 없는 자바의 문법도 중요하지만,
“왜 이렇게 동작하는지”를 이해하려고 많이 고민했던 주였다.
배운 내용이 한꺼번에 쏟아지다 보니
코드는 쓸 수 있는데 설명하려면 막히는 순간이 자주 왔다.
(배운내용을 코드로 바로 쓰는것도 안되는 경우가 종종 있었다...)
특히 Map의 get(), KeySet() 등의 함수를 활용하는 코딩문제 해결을 잘 하지 못했었다.
반복문 안에서 변수 범위, break·continue 흐름도 헷갈리는 문제도 있었다.
또, 예제는 이해되는데 조금만 변형되면 바로 막히는 느낌도 들었다.
그래서 Map과 list를 활용하여 최빈값구하는 문제, 수 찾기 문제 등 해결해보고
break는 가장 가까운 반복문을 빠져나가는것을 확인해서 프린터큐 문제를 해결해보았다.
자바는 “외워서 쓰는 언어”가 아니라
구조를 반드시 이해해야만 되는 언어라는 걸 확실히 느꼈다.
특히 메모리(스택/힙), 자료형, 참조 개념을 이해하니까
이전에 헷갈리던 코드들이 하나씩 설명되기 시작했다.
또한 코딩테스트대비로 풀었던 문제들이 하나씩 다르게 보이기 시작했다.
풀이법도 다르고 왜 이 문제를 Map으로 접근하는지 Set으로 접근하는지 등
자료구조를 선택하는 부분에서 이해되는 단계가 하나씩 늘어났다.
아직 능숙하다고 하기는 어렵지만, 자료구조의 특징에 대해 조금씩 깨닫고 있는 중이다. 코딩테스트문제를 풀면서도 정리를 했지만, 강사님의 수업을 토대로 다시 정리를 하니 개념이 정립 되어가는 중이다.
문제 풀이 중심으로 반복해서 쓰고
배열, 리스트, 맵, 집합을 활용하는 문제를 많이 풀고
코드 한 줄 한 줄을 말로 설명하는 연습을 계속하는 게 좋겠다.
조급해하지 말고 기초를 단단하게 다지는 흐름을 유지하는 게 목표다.