들어가며..
이 글은 최종 합격한 후 작성하는 글이기 때문에 자세하지 않을 수 있다.
6월 여름방학에 들어가며 체계화된 학습과 프로젝트를 경험해보고 싶었고 프로그래머스 데브코스 백엔드 과정을 신청했었다.
결과적으로 해당 과정에 불합격되면서 자신감이 많이 떨어졌고 2달정도 방황했고, 취업과 부트캠프 사이에서 정말 많은 고민을 했던 것 같다.
쭉, 별 생각없이 알고리즘 문제를 풀고, 기업 지원 공고들만 보면서 지냈던 것 같다.
그러던 중 10월에 우아한 테크코스 지원이 시작한다는 소식을 보고 일주일동안 자소서를 작성하고 신청하게 되어 프리코스를 시작하게 되었다.
1주차 문자열 계산기
문제는 처음에 정말 특이했다.
내가 알던 코딩 테스트는 알고리즘을 활용하여 문제를 어떻게 효율적으로 풀어내는지에 대한 문제였기 때문에 이런 요구사항에 대해 문제를 해결하는 방식의 문제가 정말 신기했고 재밌었던 것 같다.
코딩 테스트를 시작하기 전에, 작년 문제들을 찾아보고 어떤 방식으로 하는지 조금 알아봤기 때문에 미리 코딩 컨벤션에 대해서 좀 읽어보았고, 이를 지키기 위해 노력하려고 했다.
- 팁이 있다면 xml 파일로 다운로드해서 intellij에 등록해서
cmd + shift + l
단축키를 적극활용해야 한다.
학교에서 객체지향에 대해 배우면서 각각의 클래스들은 각각의 책임을 가져야한다고 이해하고 있었고, Spring을 학습하면서 추상화가 얼마나 중요한지 알 고 있었다. 때문에 첫 주차에서는 “어떻게 하나의 기능들을 수행하는 클래스들을 만들어서 상호작용하도록 할까?”에 대해 많은 고민을 하면서 학습했고 추가로, 내가 모르는 내용을 배우면서 진행했다.
첫 주차에서 배운 내용들은 다음의 내용들이 있었다.
- String.format()
- Matcher, Pattern 클래스
- 정규 표현식
- git 관련 여러 명령어들
- MVC 패턴
- 제네릭
- SOLID 원칙
- 인터페이스와 추상 클래스의 차이점과 용도
위의 정도가 있었다.
사실 굉장히 쉬운 문제였는데, 너무 작은 단위의 기능들로 각각의 클래스들은 분리하고 각 클래스들마다 “미래에 해당 클래스가 변경될 수 있을까?”에 대해 고민해보고 변경될 수 있는 클래스들은 인터페이스로 추상화하였다.
결과적으로 분리는 잘 되었지만 그만큼 복잡하게 구현되었다고 생각한다.
- 사실 기능 목록을 너무 대충 작성했고, 기능을 스스로 좀 복잡하게 생각했던 것 같다.
아래의 링크는 내 코드이다..