본문 바로가기

우아한테크코스 프리코스7

[우아한테크코스 6기] 백엔드 최종 합격 후기 드디어 길고 길었던 전형이 끝나고, 오늘이 최종 발표일이었다. 내일부터 시작될 가족여행 준비로 열심히 짐을 챙기고 있었는데 3시가 되자마자 메일 알림이 왔다. '설마...?!' 최종 코딩테스트 코드를 다시 살펴보니 놓친 부분이 있어서 크게 기대하지 않고있었는데, 정말 감사하게도 합격 메일을 받게되었다. 개발자로 커리어 전환을 결심하고 여러가지 학습 방법들을 찾아보고 현직자 얘기도 들어보니 "우테코는 확실히 다르다"는 얘기가 워낙 많았어서 앞으로의 생활이 정말정말 기대된다. 이제 2월부터는 우테코 개발일기가 시작될 예정이다. 화이팅👍🏻 그리고, 혹시 누군가에게 도움이 되기를 바라며 우테코를 준비했던 과정을 간략하게 정리해보았다. (해당 내용은 개인마다 차이가 있을 수 있으므로 참고만 부탁드립니다.) 지원서.. 2023. 12. 27.
[우아한테크코스 6기] 최종 코딩테스트: 비상 근무표 작성 우아한테크코스 선발과정의 정말 마지막 단계가 끝이났다. 1차 심사를 통과할거라고 약간의 기대조차 하지 않았기때문에 최종 코딩 테스트는 너무나도 감사한 기회였다. (다른분들의 과제를 봤을때 잘하는분들이 정말 많았고, 거기에 비해 내 코드는 개선할 부분이 많다고 생각했다. 오히려 개선할 부분이 많아서 1차 통과를 한건가....?) 코딩테스트를 보게될거라고 생각을 못해서, 간단한 솔로 프로젝트를 해보려고 구상중이었다. 메일을 받자마자 해당 프로젝트는 잠시 미뤄두고 온전히 최종 코딩테스트 준비에 몰입했다. 1. 먼저, 1~4차 과제를 다시 풀어보는 연습을 했다. 요구사항을 읽고 정리하고, 프로젝트 구조를 구상하고, 필요한 로직들을 작성하는 순서로 진행했다. 리팩토링과 테스트코드 작성을 제외하고 .. 2023. 12. 17.
[우아한테크코스 6기] 프리코스 4차 과제: 크리스마스 프로모션(구조 설계, 테스트 커버리지, 최종 회고) 식당에서 크리스마스를 맞아 프로모션을 진행하는 코드를 작성하는 미션이었다. 먼저 사용자로부터 식당 방문 예정일과, 주문할 메뉴를 입력받는다. 입력받은 날짜와 주문 내용에 따라 적절한 혜택을 적용하고 출력하는 프로그램이다. 이번 미션은 지난 미션들보다 필요한 기능과 제약조건이 많아서 생각해야 하는 부분이 많았다. 좀 더 효율적인 코드, 가독성이 좋은 코드, 아키텍처 설계를 고려한 코드, 유지보수하기 좋은 코드를 만들고 싶었다. 1. 구현할 기능 목록 작성 주어진 요구사항을 여러 번 반복해서 확인하면서 작성했다. 할인 조건, 할인 내용 등 세세한 조건들이 많아서 세부적인 부분까지 모두 작성했다. 예전에 프로젝트에서 사용자 요구사항 명세서를 적는 것과 유사하다고 생각했다. 요구사항 명세서를 작성할 때 세세한 .. 2023. 11. 15.
[우아한테크코스 6기] 프리코스 3차 과제: 로또(@ParameterizedTest, @CsvSource) 로또 구입 금액을 입력받고 금액에 맞는 로또를 발행하고, 당첨번호와 비교해 최종 결과를 출력해야한다. 1. 구현할 기능 목록 작성 구현해야하는 기능을 아래와 같이 정리하였다. 1주차, 2주차 과제와는 달리 에러가 발생하면 에러 메세지 출력 후 해당 부분부터 다시 입력을 받는 것으로 변경되었다. 2. 구조 설계 이번에는 에러 처리를 좀 더 일관적으로 처리하기 위해 BusinessLogicException 클래스를 정의하고, ExceptionMessage를 Enum 타입으로 정리했다. 또한 로또 당첨여부 확인, 메세지 출력, 수익 계산을 위해 LottoRank에 대한 내용을 Enum 타입으로 정의했다. 3. 비즈니스 로직 코드 작성 1차, 2차 과제 요구사항에 추가로 이번에는 메서드 길이가 15라인을 넘지 .. 2023. 11. 8.
[우아한테크코스 6기] 프리코스 2차 과제: 레이싱 게임(JUnit5, System.setIn, System.setOut) 레이싱에 참여할 참여자의 명단과 레이싱 횟수를 입력받아 중간/최종 결과를 출력하는 게임을 구현해야 한다. 1. 구현할 기능 목록 작성 구현해야하는 기능은 아래와 같이 정리해보았다. 게임 진행 흐름에 따라 어떤 기능이 필요할지 생각해보고 혹시 해당 과정에서 생길 수 있는 에러 조건에 대해서도 생각해보았다. 2. 구조 설계 구현해야하는 기능에 따라 어떤 도메인이 필요할지, 어떤 메서드가 필요할지 먼저 고민해보았다. 자동차 게임이므로 참가자(Player)와 게임진행자(Manager)가 필요하다고 생각했다. 또한 MVC패턴을 고려해 입력/출력을 담당하는 클래스, 그리고 게임 전체를 총괄하는 Game 클래스를 구상했다. 3. 비즈니스 로직 코드 작성 이번에는 각 메서드가 최대한 하나의 기능을 하도록, depth가.. 2023. 10. 31.
[우아한테크코스] 프리코스 1차 과제: 숫자 야구 1부터 9까지 서로 다른 수로 이루어진 3자리의 숫자를 맞추는 게임을 구현해야 한다. 먼저 구현해야 하는 기능 목록을 작성했다. 1. 구현할 기능 목록 작성 2. 코드 작성 처음에는 코딩 테스트처럼 main 함수에 기능 요구사항을 만족하는 전체 기능을 구현했었다. 하지만 JAVA는 객체지향 언어이고, 객체의 역할과 용도에 따른 구분이 필요하다는 생각이 들었다. 먼저 역할에 따라 클래스를 구분했다. 애플리케이션 전체 실행을 컨트롤하는 클래스 (BaseballApp) 애플리케이션 전체 설정을 담당하는 클래스 (AppConfigure) 랜덤 숫자(정답)를 생성하는 클래스 (RandomNum) 사용자로부터 숫자를 입력받는 클래스 (InputNum) 입력받은 숫자를 검증하는 클래스 (CheckNum) 최대한 하나.. 2023. 10. 23.