코테 공부 시작
요즘 코딩 공부를 다시 시작하면서 코딩테스트 공부의 필요성을 느꼈다.
사실 항해하던 시절엔 스프링만 잘 쓰면 되지 코테가 필요한가? 싶었던게 사실이다.
당시엔 자바 이해도도 부족했고 스프링은 더더욱 몰랐으니 스프링 공부 시간도 모자란데
한 문제 한 문제 오래 걸리는 코테를 공부할 시간도 아깝고 공부해야할 필요성도 못느꼈다.
그런데 왜 코딩테스트?
한동안 코딩을 손 놓다시피 하다가 최근 다시 해보려니 생각이 좀 바뀌었다.
다시 코딩 공부를 시작하며 코테 공부가 필요하단걸 느낀건 3가지 이유 정도가 있다.
- 취직 시장이 넓어진다.
- 코딩 재활
- 자료구조 공부
1. 취직 시장이 넓어진다.
우선 채용 공고를 보면 코딩테스트를 보는 회사가 눈에 꽤 보인다. 이런 회사를 놓치는건 아깝다.
단순히 코테를 보는 회사까지 지원할 수 있다는 점도 있지만 좀 더 나은 개발자가 되고자 한다면
회사들이 코딩테스트를 보는 이유를 생각해보는것도 좋을것 같았다.
2. 코딩 재활
항해 수료한 이후로는 사실상 코딩을 손 놓다시피 했으니 필연적으로 익힌 지식의 많은 부분이 휘발됐다.
사실 한창 열심히 공부할 때도 스프링 위주로 공부했기 때문에 순수 자바 이해도는 그리 높지도 않았다.
그래서 필수적인 stream 문법 같은것도 공부하고, IntelliJ 도 다시 익숙해질 겸 코딩테스트를 공부하기로 했다.
3. 자료구조 공부
코딩 재활도 할 겸 자바로 코테를 연습하는데 프로그래머스 레벨 0에서부터 많은 어려움이 따랐다.
IDE 를 쓸 수 없다는 소리를 들어서 IDE 없이 문제를 풀려니 1차원 배열 쓰는것도 헤맸다.
그런 기본적인 문제 뿐 아니라 문제 분석 이후 풀이법을 구상해야하는데 자료구조를 모르니 그저 막막했다.
특히 배열만 나오면 포기하고 파이썬으로 코테 준비나 할까 싶은 생각부터 들었다.
자바는 배열 크기를 바꾸려면 초기화하고 값을 재할당 하는 수 밖에 없다.
주어진 배열에서 조건에 맞는 원소를 제거해야 하는데, 제거할 때마다 배열을 초기화 해야하나? 싶었다.
그래서 도저히 이렇게는 안되겠다는 생각이 들었고 다른 사람들 문제 풀이를 보면서
Stack 이나 List, Set, Map 같은 자료구조를 찾아보고 이 자료구조의 특징을 알아보았다.
문제마다 필요한 자료구조를 생각해보고 적절한 자료구조를 이용하니 풀이 시간을 극적으로 줄일 수 있었다.
특히 List, Set, Map 은 구현체고 이를 구현한 HashSet, LinkedHashSet 같은 구현체가 있는걸 알았다.
순서를 보장하는 여부 등 이들의 특징과 구현 방법이 각각 다르니 한번 공부해봐야겠다.
'알고리즘 > 복습 및 회고' 카테고리의 다른 글
[알고리즘 회고] 프로그래머스 레벨1 완주 (0) | 2023.10.20 |
---|---|
프로그래머스 레벨 0 완주 (0) | 2023.09.16 |