Boot Camp/[우테코] 프리코스

[3주차] lotto 미션

계란💕 2022. 11. 16. 00:50

 

  Ex) lotto 요구 사항

java
열기
  • 요구사항
    • 위와 같이 요구사항이 너무 많다.
    • 메서드 15라인 이하, 들여쓰기 3미만.. 과 같은 간단한 조건도 하나하나 맞추다보니까 시간이 좀 걸렸다.
    • 나는 일단 메서드를 모두 만든 다음에 다시 위 조건을 맞추기 위해 메서드를 쪼개고 쪼개고 또 쪼갰다.
    • 처음에는 Map, Queue를 이용해서 enum클래스를 사용하지 않았지만 뒤늦게 조건을 맞추기 위해 enum 클래스르 만들었다.
    • else에 대한 금지 조건도 있는데 이는 continue 또는 return 같은 예약어를 쓰면 else를 굳이 안 써도 되기 때문에 주어진 것으로 보인다.
    • 외부 라이브러리는 금지 되기 때문에 처음에 Lombok 라이브러리를 적용했다가 모두 지우고 getter와 생성자를 구현했다.

 

 

  • README
java
열기

 

 

  • Enum 클래스
java
열기
  • 맞춘 개수를 cnt로 파악할 수 있도록 enum클래스를 만든다.
    • 로또당첨 번호와 내 번호를 대조해서 각 THREE, FOUR, FIVE, FIVE_WITH_BONUS, SIX에 대해 카운트가 가능하다.
    • 요구 사항 대로 enum클래스에 멤버 변수로 메시지, cnt 같은 여러 개의 속성을 넣으니까 메시지를 읽어오거나 cnt값을 세팅해주기에 편리했다.

 

 

  • Lotto 
java
열기
  • 정렬 메서드를 새로 만들었다.
    • Lotto의 numbers는 List를 통해 만들지만 List와는 조금 다르기 때문에 Collections.sort()를 이용하면 에러가 났기 때문이다.
    • 선택 정렬을 이용해서 구현했다.
  • List에서 자주 쓰이는 contains()도 구현했다.
  • Lotto를  toString()으로 출력하면 제대로 안 나오길래 출력 메서드도 만들었다.
  • validate() 는 기존에 우테코에서 제시된 메서드에 내용만 추가한 형태이다.

 

 

  • Application
java
열기
  • 제시된 요구 사항을 충족시키기 위해 공을 많이 들였다.
  • 가장 곤혼스러웠던 점은 문제의 요구 사항에서는 IllegalArgumentException 을 터뜨리라고 했으나 그렇게 실행하면 test 코드를 통과하지 않았다.
    • 그래서 디버깅을 해보니까 NoSuchElementException을 throw 해주니까 해결됐다.
    • 꼼수로 테스트 코드를 통과했지만 어떻게 하는 게 올바른 방법인지 아직도 모르겠다.
    • 문제를 잘못 출제하셨나? 하는 생각까지 들었다.
  • 수익률 구하는 메서드 getIncome()에다가 cnt구하는 로직까지 한번에 몰아서 로직을 구현했는데 라인이 50줄이 넘었다.
    • 이 부분 메서드를 쪼개고 또 쪼개는데 고생을 좀 했다.
    • 그리고 원래는 모든 Lotto에 대해서 수익과 cnt를 구할 수 있도록 이중 for문 안에 if 문까지 넣으니까 들여쓰기 조건을 충족하지 못했다.
    • 이 방법이 효율적이라고 생각해서 구현한건데 들여쓰기 조건을 맞추기 위해서 메서드를 또 분리시켰다.
    • 아마 완전탐색에 가깝고 효율성이 떨어지니까 못 쓰도록 하지 않았나 싶다. 
    • 앞으로는 메서드를 어떻게 분리할지 생각을 한 다음에 구현하는 습관을 들여야겠다.
  • 메서드 명을 급하게 지은거라서 잘 지은 것 같지는 않다.
  • 사용자한테 값을 입력 받거나 Random으로 값을 추출하는 것을 배민에서 제공하는 라이브러리의 안에 있는 메서드를 이용해야한다. 
    • 이 부분에 대한 조건은 왜 있는 건지 아직 파악하지 못했다.

 

 

 

느낀 점

  • 이제 프리코스가 한 주 남았다. 통과해서 꼭 코테를 경험이라고 하고 싶다..!
    • 여행 일정이 있어서 12/17 코테를 본다면 일정이 변경될 수 있지만 그래도 시험은 보고 싶다.
  • 이전까지의 과제 중에 주어진 테스트를 통과하기가 너무 어려웠다.
  • 이번 주 팀프로젝트가 마무리되고 나면 제로베이스 동기 수강들 10 명과  알고리즘 스터디를 빡시게 해야겠다.

 

'Boot Camp > [우테코] 프리코스' 카테고리의 다른 글

[4주차] bridge 미션  (0) 2022.11.20
[2주차] baseball game 미션  (0) 2022.11.09
[1주차] on-boarding 미션  (0) 2022.11.01