Skip to content

[완두콩] 홍서연 로또 미션 제출합니다. - #203

Open
se0ye2n wants to merge 3 commits into
next-step:se0ye2nfrom
se0ye2n:main
Open

[완두콩] 홍서연 로또 미션 제출합니다.#203
se0ye2n wants to merge 3 commits into
next-step:se0ye2nfrom
se0ye2n:main

Conversation

@se0ye2n

@se0ye2n se0ye2n commented Aug 2, 2026

Copy link
Copy Markdown

안녕하세요, 임혜정 리뷰어님!
초록스터디에 참여하고 있는 홍서연입니다 잘 부탁드립니다 😊

Java는 학교 수업에서 배운 경험이 있지만 오랫동안 사용하지 않아, 이번 미션을 진행하면서 기초 문법과 객체지향 설계를 다시 공부하고 있습니다

#1단계 — 로또 자동 구매
사용자에게 구입 금액을 입력받고, 구입 금액을 로또 한 장의 가격인 1,000원으로 나누어 구매할 로또 개수를 계산했습니다

계산된 개수만큼 1부터 45까지의 숫자 중 중복되지 않는 숫자 6개를 무작위로 생성하고, 번호를 오름차순으로 정렬하여 출력했습니다

처음에는 입력, 로또 생성, 출력을 모두 한 클래스에서 처리하려고 했지만 역할이 너무 많아지는 것 같아 입력은 InputView, 출력은 OutputView, 로또 번호 관리는 Lotto로 분리했습니다

어려웠던 점·궁금한 점
: 로또 번호를 생성하는 책임을 Lotto가 가져야 하는지, 별도의 생성 클래스가 가져야 하는지 고민했습니다.=
로또 가격을 어떤 클래스에서 상수로 관리하는 것이 가장 자연스러운지 궁금합니다
클래스만 여러 개로 나누고 실제 책임은 제대로 분리하지 못한 것은 아닌지 봐주셨으면 합니다

#2단계 — 당첨 통계
사용자에게 당첨 번호를 입력받고, 구매한 각각의 로또 번호와 비교하여 일치하는 번호의 개수를 계산했습니다
번호가 3개, 4개, 5개, 6개 일치하는 경우를 구분해 등수별 당첨 개수를 집계하고, 전체 당첨 금액과 수익률을 계산하여 출력했습니다

처음에는 Controller에서 로또 번호를 하나씩 꺼내 당첨 번호와 직접 비교했지만, Controller가 당첨 판단까지 담당하면 책임이 너무 많다고 생각했습니다 따라서 로또 번호를 비교하는 기능을 Model 쪽으로 옮기고, Controller는 전체 실행 흐름을 연결하도록 구성했습니다

어려웠던 점·궁금한 점
: 로또와 당첨 번호를 비교하는 책임이 Lotto에 있는 것이 적절한지 궁금합니다
당첨 통계와 수익률 계산을 하나의 클래스에서 관리해도 되는지 궁금합니다
Controller가 반복문을 통해 모든 로또의 당첨 결과를 계산하는 구조가 적절한지 봐주셨으면 합니다

#3단계 — 로또 2등 당첨
기존 당첨 번호 6개에 보너스 번호를 추가로 입력받도록 구현했습니다
일반 당첨 번호가 5개 일치한 경우, 보너스 번호까지 일치하면 2등으로 처리하고 보너스 번호가 일치하지 않으면 3등으로 처리했습니다

이 단계에서 단순한 일치 개수만으로는 등수를 판단할 수 없었기 때문에, Rank enum에 등수별 일치 개수와 당첨 금액을 저장했습니다 이후 일치 개수와 보너스 번호 일치 여부를 전달해 알맞은 등수를 반환하도록 구현했습니다
enum을 실제 코드에 적용해 본 경험이 거의 없어, 등수와 당첨 금액처럼 서로 관련 있는 값을 한곳에서 관리하는 방식이 익숙하지 않았습니다

어려웠던 점·궁금한 점
: 당첨 등수를 판정하는 메서드를 Rank enum 내부에 두는 것이 적절한지 궁금합니다
2등처럼 일치 개수뿐 아니라 보너스 번호 여부까지 필요한 조건을 enum에서 어떻게 표현하는 것이 좋은지 궁금합니다
당첨 번호와 보너스 번호를 하나의 클래스에서 관리하는 현재 구조가 적절한지 봐주셨으면 합니다

#4단계 — 로또 수동 구매
기존 자동 구매 기능에 수동 구매 기능을 추가했습니다.]
사용자에게 전체 구입 금액과 수동으로 구매할 로또 개수를 입력받은 뒤, 입력한 개수만큼 로또 번호 6개를 직접 입력받았습니다

전체 구매 가능한 로또 개수에서 수동 구매 개수를 제외한 나머지는 자동으로 생성했습니다 이후 수동 로또와 자동 로또를 하나의 목록으로 합쳐 기존 당첨 계산 기능을 동일하게 사용했습니다

처음에는 자동 로또와 수동 로또를 서로 다른 클래스로 만들려고 했습니다 하지만 생성되는 방식만 다르고, 생성된 이후에는 번호를 보관하고 당첨 결과를 계산하는 역할이 같다고 판단하여 둘 다 Lotto 객체로 관리했습니다

어려웠던 점·궁금한 점
자동 로또와 수동 로또를 같은 Lotto 클래스로 관리한 것이 적절한지 궁금합니다
수동 구매 개수가 전체 구매 가능한 개수를 초과하는 경우의 검증 위치가 적절한지 궁금합니다
수동 로또와 자동 로또의 생성 방식만 별도로 분리하고, 생성 이후에는 같은 객체로 관리하는 구조가 객체지향적으로 자연스러운지 봐주셨으면 합니다

이번 미션에서 가장 어려웠던 점
: 단계가 진행될수록 기능이 추가되면서 기존 코드를 어느 정도까지 수정해야 하는지 판단하는 것이 가장 어려웠습니다
특히 책임을 분리하려고 클래스를 많이 만들면 코드가 오히려 복잡해지는 것 같았고, 반대로 클래스를 적게 만들면 Controller나 특정 클래스가 너무 많은 일을 담당하는 것 같았습니다

또한 처음부터 모든 책임을 정확하게 나누려고 하면 구현을 시작하기 어려웠고, 우선 기능을 완성한 뒤 리팩터링하려고 하면 기존 구조를 크게 바꿔야 하는 경우가 있었습니다 실제 개발에서는 어느 정도까지 먼저 설계하고, 어느 시점에 책임을 분리하며 리팩터링하는 것이 좋은지 궁금합니다

#중점적으로 봐주셨으면 하는 부분

  • Model, View, Controller의 책임이 적절하게 나누어졌는지
  • Controller에 핵심 로직이 너무 많이 포함되어 있지는 않은지
  • Lotto, 당첨 번호, 당첨 결과 클래스 내부의 책임이 적절한지
  • Rank enum을 사용한 당첨 등수 판단 방식이 자연스러운지
  • 자동 로또와 수동 로또를 같은 객체로 관리하는 방식이 적절한지
  • 메서드명과 변수명이 해당 역할을 잘 나타내는지

감사합니다!
홍서연 드림

@se0ye2n

se0ye2n commented Aug 2, 2026

Copy link
Copy Markdown
Author

5단계는 오늘내로 완성하지 못할 것 같아서 먼저 한 1~4단계 제출합니다! 내일 안으로 5단계 push하겠습니다 목요일부터 농활을 가게되어서 그 전에 피드백 주시면 감사하겠습니:)

@se0ye2n
se0ye2n changed the base branch from main to se0ye2n August 2, 2026 14:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant