프리코스 1주차
1주 차 미션은 개발 환경 세팅 및 Github를 통한 과제 제출등 기본적으로 익혀야 하는 것들이 있기 때문에 가벼운 미션이 준비됐다고 했습니다.
프리코스 진행 방식
1. 각 문제에 대한 요구 사항을 만족시킨다.
2. Github을 통한 미션 제출
- Git fork -> 사용자 branch 생성 -> commit -> PR(Pull Request) -> 우아한테크코스 지원 플랫폼에서 제출
미션 문제
공통 사항
저만 보는 코드가 아니고 다른 사람들도 본다고 생각했습니다. 또한 기능별로 커밋을 해야 했기 때문에 기능별로 문제를 분석했고 그 분류로 문제를 해결했습니다.
자바 컨벤션 : 평소 자바로 프로그래밍을 주 언어로 사용하지 않아서 자바를 과연 자바스럽게 짤 수 있을까에 대한 걱정이 있었습니다. 따라서 자바 컨벤션부터 맞춰야 겠다는 생각으로 Google Java Style guide를 보며 맞춰나갔습니다.
Github Commit Style Guide: git 스테이지에 올린 파일들에 대해 커밋을 할려 했는데 이러한 커밋 내용도 있지 않을까라는 생각으로 Github Commit Style Guide를 참고하여 작성했습니다.
문제 요약: 문제를 보면서 코드를 짜려해도 문제가 길면 문제의 요구사항을 다 넣지 못할꺼 같다는 생각이 들어서 먼저 정리하고 진행했습니다.. 또한 기능 마다 commit을 하라는 요구사항도 있었기 때문에 기능에 맞춰 정리하였습니다.
1번 문제
1번 문제는 어떤 예외가 있을까에 대한 생각을 많이 했습니다. 명확한 기준이 없었기에 어떤 이상한 입력을 넣을까를 참고하여 작성했습니다.
2번 문제
2번 문제는 중복되면 없어져야 하기때문에 stack처럼 값을 넣기전에 같으면 빼고 다르면 넣는 방식으로 진행했습니다.
3번 문제
해당 문제에 대해서는 숫자가 커졌을때 속도를 어떻게 빠르게 할까에 대해 생각했습니다. 따라서 배열을 선언하여 기존 값을 저장하며 이전 값을 활용하는 방식으로 했습니다.
4번 문제
각 문자는 대응하는 값이 고정인 사전이어서 이를 Map에 담아서 변환하였습니다.
5번 문제
돈에 대한 리스트를 만들어서 해당 값을 통해 결과를 구했습니다.
6번 문제
연속으로 중복된 문자를 구하는 것이 가장 힘들었던 문제였습니다. 두 문자열에서 연속된 같은 문자열을 구하기 위해 for문과 배열을 통해 해결했습니다.
7번문제
문제를 이해하기 힘들었고 내용이 많아 작성해야하는 기능이 많았습니다. 순차적으로 기능을 구현하여 완성했습니다.
후기 & 코드 리뷰
코드 리뷰
코드 리뷰를 통해 받았던 고칠점은 코드에 매직넘버를 따로 처리하는 것이 좋겠다 라는 의견이었습니다.
후기
미션 내용이 많아질 수록 요구하는 기능이 많았고 코드가 변경되는 상황이 많았습니다. 이때 코드 기능별 commit을 위해 요구 사항 정의서를 기능별로 작성했던 부분이 코드를 구체적으로 짤 수 있게 도와줘서 체계적으로 진행할 수 있었던거 같고 잘못된 기능 구현시 이전 commit으로 돌아가서 다시 코드를 짤 수 있었던 점이 매력적이었습니다.
다만 하나의 함수에 하나의 기능만을 담으려고 노력했지만 내가 작성한 함수가 하나 이상의 기능을 가지고 있어서 분리를 해야하는지 판단하기 어려웠습니다.( 즉, 더 작게 쪼개야 하는지) 하지만 이렇게 하다 보니 디버깅을 쉽게 할 수 있다는 장점이 있었습니다.