Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/parkjungyoon/java_lotto_review
https://github.com/parkjungyoon/java_lotto_review
Last synced: about 19 hours ago
JSON representation
- Host: GitHub
- URL: https://github.com/parkjungyoon/java_lotto_review
- Owner: ParkJungYoon
- Created: 2022-11-17T01:35:59.000Z (about 2 years ago)
- Default Branch: ParkJungYoon
- Last Pushed: 2022-12-08T15:58:47.000Z (about 2 years ago)
- Last Synced: 2024-11-21T06:38:14.530Z (2 months ago)
- Language: Java
- Homepage:
- Size: 134 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# ๋ฏธ์ - ๋ก๋
## ๐ ์งํ ๋ฐฉ์
- ๋ฏธ์ ์ **๊ธฐ๋ฅ ์๊ตฌ ์ฌํญ, ํ๋ก๊ทธ๋๋ฐ ์๊ตฌ ์ฌํญ, ๊ณผ์ ์งํ ์๊ตฌ ์ฌํญ** ์ธ ๊ฐ์ง๋ก ๊ตฌ์ฑ๋์ด ์๋ค.
- ์ธ ๊ฐ์ ์๊ตฌ ์ฌํญ์ ๋ง์กฑํ๊ธฐ ์ํด ๋ ธ๋ ฅํ๋ค. ํนํ ๊ธฐ๋ฅ์ ๊ตฌํํ๊ธฐ ์ ์ ๊ธฐ๋ฅ ๋ชฉ๋ก์ ๋ง๋ค๊ณ , ๊ธฐ๋ฅ ๋จ์๋ก ์ปค๋ฐ ํ๋ ๋ฐฉ์์ผ๋ก ์งํํ๋ค.
- ๊ธฐ๋ฅ ์๊ตฌ ์ฌํญ์ ๊ธฐ์ฌ๋์ง ์์ ๋ด์ฉ์ ์ค์ค๋ก ํ๋จํ์ฌ ๊ตฌํํ๋ค.## ๐ฎ ๋ฏธ์ ์ ์ถ ๋ฐฉ๋ฒ
- ๋ฏธ์ ๊ตฌํ์ ์๋ฃํ ํ GitHub์ ํตํด ์ ์ถํด์ผ ํ๋ค.
- GitHub์ ํ์ฉํ ์ ์ถ ๋ฐฉ๋ฒ์ [ํ๋ฆฌ์ฝ์ค ๊ณผ์ ์ ์ถ](https://github.com/woowacourse/woowacourse-docs/tree/master/precourse) ๋ฌธ์๋ฅผ ์ฐธ๊ณ ํด
์ ์ถํ๋ค.
- GitHub์ ๋ฏธ์ ์ ์ ์ถํ ํ [์ฐ์ํํ ํฌ์ฝ์ค ์ง์](https://apply.techcourse.co.kr) ์ฌ์ดํธ์ ์ ์ํ์ฌ ํ๋ฆฌ์ฝ์ค ๊ณผ์ ๋ฅผ ์ ์ถํ๋ค.
- ์์ธํ ๋ฐฉ๋ฒ์ [์ ์ถ ๊ฐ์ด๋](https://github.com/woowacourse/woowacourse-docs/tree/master/precourse#์ ์ถ-๊ฐ์ด๋) ์ฐธ๊ณ
- **Pull Request๋ง ๋ณด๋ด๊ณ ์ง์ ํ๋ซํผ์์ ๊ณผ์ ๋ฅผ ์ ์ถํ์ง ์์ผ๋ฉด ์ต์ข ์ ์ถํ์ง ์์ ๊ฒ์ผ๋ก ์ฒ๋ฆฌ๋๋ ์ฃผ์ํ๋ค.**## ๐จ ๊ณผ์ ์ ์ถ ์ ์ฒดํฌ ๋ฆฌ์คํธ - 0์ ๋ฐฉ์ง
- ๊ธฐ๋ฅ ๊ตฌํ์ ๋ชจ๋ ์ ์์ ์ผ๋ก ํ๋๋ผ๋ **์๊ตฌ ์ฌํญ์ ๋ช ์๋ ์ถ๋ ฅ๊ฐ ํ์์ ์งํค์ง ์์ ๊ฒฝ์ฐ 0์ ์ผ๋ก ์ฒ๋ฆฌ**ํ๋ค.
- ๊ธฐ๋ฅ ๊ตฌํ์ ์๋ฃํ ๋ค ์๋ ๊ฐ์ด๋์ ๋ฐ๋ผ ํ ์คํธ๋ฅผ ์คํํ์ ๋ ๋ชจ๋ ํ ์คํธ๊ฐ ์ฑ๊ณตํ๋์ง ํ์ธํ๋ค.
- **ํ ์คํธ๊ฐ ์คํจํ ๊ฒฝ์ฐ 0์ ์ผ๋ก ์ฒ๋ฆฌ**๋๋ฏ๋ก, ๋ฐ๋์ ํ์ธ ํ ์ ์ถํ๋ค.### ํ ์คํธ ์คํ ๊ฐ์ด๋
- ํฐ๋ฏธ๋์์ `java -version`์ ์คํํ์ฌ Java ๋ฒ์ ์ด 11์ธ์ง ํ์ธํ๋ค. ๋๋ Eclipse ๋๋ IntelliJ IDEA์ ๊ฐ์ IDE์์ Java 11๋ก ์คํ๋๋์ง ํ์ธํ๋ค.
- ํฐ๋ฏธ๋์์ Mac ๋๋ Linux ์ฌ์ฉ์์ ๊ฒฝ์ฐ `./gradlew clean test` ๋ช ๋ น์ ์คํํ๊ณ ,
Windows ์ฌ์ฉ์์ ๊ฒฝ์ฐ `gradlew.bat clean test` ๋ช ๋ น์ ์คํํ ๋ ๋ชจ๋ ํ ์คํธ๊ฐ ์๋์ ๊ฐ์ด ํต๊ณผํ๋์ง ํ์ธํ๋ค.```
BUILD SUCCESSFUL in 0s
```---
## ๐ ๊ธฐ๋ฅ ์๊ตฌ ์ฌํญ
๋ก๋ ๊ฒ์ ๊ธฐ๋ฅ์ ๊ตฌํํด์ผ ํ๋ค. ๋ก๋ ๊ฒ์์ ์๋์ ๊ฐ์ ๊ท์น์ผ๋ก ์งํ๋๋ค.
```
- ๋ก๋ ๋ฒํธ์ ์ซ์ ๋ฒ์๋ 1~45๊น์ง์ด๋ค.
- 1๊ฐ์ ๋ก๋๋ฅผ ๋ฐํํ ๋ ์ค๋ณต๋์ง ์๋ 6๊ฐ์ ์ซ์๋ฅผ ๋ฝ๋๋ค.
- ๋น์ฒจ ๋ฒํธ ์ถ์ฒจ ์ ์ค๋ณต๋์ง ์๋ ์ซ์ 6๊ฐ์ ๋ณด๋์ค ๋ฒํธ 1๊ฐ๋ฅผ ๋ฝ๋๋ค.
- ๋น์ฒจ์ 1๋ฑ๋ถํฐ 5๋ฑ๊น์ง ์๋ค. ๋น์ฒจ ๊ธฐ์ค๊ณผ ๊ธ์ก์ ์๋์ ๊ฐ๋ค.
- 1๋ฑ: 6๊ฐ ๋ฒํธ ์ผ์น / 2,000,000,000์
- 2๋ฑ: 5๊ฐ ๋ฒํธ + ๋ณด๋์ค ๋ฒํธ ์ผ์น / 30,000,000์
- 3๋ฑ: 5๊ฐ ๋ฒํธ ์ผ์น / 1,500,000์
- 4๋ฑ: 4๊ฐ ๋ฒํธ ์ผ์น / 50,000์
- 5๋ฑ: 3๊ฐ ๋ฒํธ ์ผ์น / 5,000์
```- ๋ก๋ ๊ตฌ์ ๊ธ์ก์ ์ ๋ ฅํ๋ฉด ๊ตฌ์ ๊ธ์ก์ ํด๋นํ๋ ๋งํผ ๋ก๋๋ฅผ ๋ฐํํด์ผ ํ๋ค.
- ๋ก๋ 1์ฅ์ ๊ฐ๊ฒฉ์ 1,000์์ด๋ค.
- ๋น์ฒจ ๋ฒํธ์ ๋ณด๋์ค ๋ฒํธ๋ฅผ ์ ๋ ฅ๋ฐ๋๋ค.
- ์ฌ์ฉ์๊ฐ ๊ตฌ๋งคํ ๋ก๋ ๋ฒํธ์ ๋น์ฒจ ๋ฒํธ๋ฅผ ๋น๊ตํ์ฌ ๋น์ฒจ ๋ด์ญ ๋ฐ ์์ต๋ฅ ์ ์ถ๋ ฅํ๊ณ ๋ก๋ ๊ฒ์์ ์ข ๋ฃํ๋ค.
- ์ฌ์ฉ์๊ฐ ์๋ชป๋ ๊ฐ์ ์ ๋ ฅํ ๊ฒฝ์ฐ `IllegalArgumentException`๋ฅผ ๋ฐ์์ํค๊ณ , "[ERROR]"๋ก ์์ํ๋ ์๋ฌ ๋ฉ์์ง๋ฅผ ์ถ๋ ฅ ํ ์ข ๋ฃํ๋ค.### ์ ์ถ๋ ฅ ์๊ตฌ ์ฌํญ
#### ์ ๋ ฅ
- ๋ก๋ ๊ตฌ์ ๊ธ์ก์ ์ ๋ ฅ ๋ฐ๋๋ค. ๊ตฌ์ ๊ธ์ก์ 1,000์ ๋จ์๋ก ์ ๋ ฅ ๋ฐ์ผ๋ฉฐ 1,000์์ผ๋ก ๋๋์ด ๋จ์ด์ง์ง ์๋ ๊ฒฝ์ฐ ์์ธ ์ฒ๋ฆฌํ๋ค.
```
14000
```- ๋น์ฒจ ๋ฒํธ๋ฅผ ์ ๋ ฅ ๋ฐ๋๋ค. ๋ฒํธ๋ ์ผํ(,)๋ฅผ ๊ธฐ์ค์ผ๋ก ๊ตฌ๋ถํ๋ค.
```
1,2,3,4,5,6
```- ๋ณด๋์ค ๋ฒํธ๋ฅผ ์ ๋ ฅ ๋ฐ๋๋ค.
```
7
```#### ์ถ๋ ฅ
- ๋ฐํํ ๋ก๋ ์๋ ๋ฐ ๋ฒํธ๋ฅผ ์ถ๋ ฅํ๋ค. ๋ก๋ ๋ฒํธ๋ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํ์ฌ ๋ณด์ฌ์ค๋ค.
```
8๊ฐ๋ฅผ ๊ตฌ๋งคํ์ต๋๋ค.
[8, 21, 23, 41, 42, 43]
[3, 5, 11, 16, 32, 38]
[7, 11, 16, 35, 36, 44]
[1, 8, 11, 31, 41, 42]
[13, 14, 16, 38, 42, 45]
[7, 11, 30, 40, 42, 43]
[2, 13, 22, 32, 38, 45]
[1, 3, 5, 14, 22, 45]
```- ๋น์ฒจ ๋ด์ญ์ ์ถ๋ ฅํ๋ค.
```
3๊ฐ ์ผ์น (5,000์) - 1๊ฐ
4๊ฐ ์ผ์น (50,000์) - 0๊ฐ
5๊ฐ ์ผ์น (1,500,000์) - 0๊ฐ
5๊ฐ ์ผ์น, ๋ณด๋์ค ๋ณผ ์ผ์น (30,000,000์) - 0๊ฐ
6๊ฐ ์ผ์น (2,000,000,000์) - 0๊ฐ
```- ์์ต๋ฅ ์ ์์์ ๋์งธ ์๋ฆฌ์์ ๋ฐ์ฌ๋ฆผํ๋ค. (ex. 100.0%, 51.5%, 1,000,000.0%)
```
์ด ์์ต๋ฅ ์ 62.5%์ ๋๋ค.
```- ์์ธ ์ํฉ ์ ์๋ฌ ๋ฌธ๊ตฌ๋ฅผ ์ถ๋ ฅํด์ผ ํ๋ค. ๋จ, ์๋ฌ ๋ฌธ๊ตฌ๋ "[ERROR]"๋ก ์์ํด์ผ ํ๋ค.
```
[ERROR] ๋ก๋ ๋ฒํธ๋ 1๋ถํฐ 45 ์ฌ์ด์ ์ซ์์ฌ์ผ ํฉ๋๋ค.
```#### ์คํ ๊ฒฐ๊ณผ ์์
```
๊ตฌ์ ๊ธ์ก์ ์ ๋ ฅํด ์ฃผ์ธ์.
80008๊ฐ๋ฅผ ๊ตฌ๋งคํ์ต๋๋ค.
[8, 21, 23, 41, 42, 43]
[3, 5, 11, 16, 32, 38]
[7, 11, 16, 35, 36, 44]
[1, 8, 11, 31, 41, 42]
[13, 14, 16, 38, 42, 45]
[7, 11, 30, 40, 42, 43]
[2, 13, 22, 32, 38, 45]
[1, 3, 5, 14, 22, 45]๋น์ฒจ ๋ฒํธ๋ฅผ ์ ๋ ฅํด ์ฃผ์ธ์.
1,2,3,4,5,6๋ณด๋์ค ๋ฒํธ๋ฅผ ์ ๋ ฅํด ์ฃผ์ธ์.
7๋น์ฒจ ํต๊ณ
---
3๊ฐ ์ผ์น (5,000์) - 1๊ฐ
4๊ฐ ์ผ์น (50,000์) - 0๊ฐ
5๊ฐ ์ผ์น (1,500,000์) - 0๊ฐ
5๊ฐ ์ผ์น, ๋ณด๋์ค ๋ณผ ์ผ์น (30,000,000์) - 0๊ฐ
6๊ฐ ์ผ์น (2,000,000,000์) - 0๊ฐ
์ด ์์ต๋ฅ ์ 62.5%์ ๋๋ค.
```---
## ๐ฏ ํ๋ก๊ทธ๋๋ฐ ์๊ตฌ ์ฌํญ
- JDK 11 ๋ฒ์ ์์ ์คํ ๊ฐ๋ฅํด์ผ ํ๋ค. **JDK 11์์ ์ ์์ ์ผ๋ก ๋์ํ์ง ์์ ๊ฒฝ์ฐ 0์ ์ฒ๋ฆฌํ๋ค.**
- ํ๋ก๊ทธ๋จ ์คํ์ ์์์ ์ `Application`์ `main()`์ด๋ค.
- `build.gradle` ํ์ผ์ ๋ณ๊ฒฝํ ์ ์๊ณ , ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ง ์๋๋ค.
- [Java ์ฝ๋ ์ปจ๋ฒค์ ](https://github.com/woowacourse/woowacourse-docs/tree/master/styleguide/java) ๊ฐ์ด๋๋ฅผ ์ค์ํ๋ฉฐ ํ๋ก๊ทธ๋๋ฐํ๋ค.
- ํ๋ก๊ทธ๋จ ์ข ๋ฃ ์ `System.exit()`๋ฅผ ํธ์ถํ์ง ์๋๋ค.
- ํ๋ก๊ทธ๋จ ๊ตฌํ์ด ์๋ฃ๋๋ฉด `ApplicationTest`์ ๋ชจ๋ ํ ์คํธ๊ฐ ์ฑ๊ณตํด์ผ ํ๋ค. **ํ ์คํธ๊ฐ ์คํจํ ๊ฒฝ์ฐ 0์ ์ฒ๋ฆฌํ๋ค.**
- ํ๋ก๊ทธ๋๋ฐ ์๊ตฌ ์ฌํญ์์ ๋ฌ๋ฆฌ ๋ช ์ํ์ง ์๋ ํ ํ์ผ, ํจํค์ง ์ด๋ฆ์ ์์ ํ๊ฑฐ๋ ์ด๋ํ์ง ์๋๋ค.
- indent(์ธ๋ดํธ, ๋ค์ฌ์ฐ๊ธฐ) depth๋ฅผ 3์ด ๋์ง ์๋๋ก ๊ตฌํํ๋ค. 2๊น์ง๋ง ํ์ฉํ๋ค.
- ์๋ฅผ ๋ค์ด while๋ฌธ ์์ if๋ฌธ์ด ์์ผ๋ฉด ๋ค์ฌ์ฐ๊ธฐ๋ 2์ด๋ค.
- ํํธ: indent(์ธ๋ดํธ, ๋ค์ฌ์ฐ๊ธฐ) depth๋ฅผ ์ค์ด๋ ์ข์ ๋ฐฉ๋ฒ์ ํจ์(๋๋ ๋ฉ์๋)๋ฅผ ๋ถ๋ฆฌํ๋ฉด ๋๋ค.
- 3ํญ ์ฐ์ฐ์๋ฅผ ์ฐ์ง ์๋๋ค.
- ํจ์(๋๋ ๋ฉ์๋)๊ฐ ํ ๊ฐ์ง ์ผ๋ง ํ๋๋ก ์ต๋ํ ์๊ฒ ๋ง๋ค์ด๋ผ.
- JUnit 5์ AssertJ๋ฅผ ์ด์ฉํ์ฌ ๋ณธ์ธ์ด ์ ๋ฆฌํ ๊ธฐ๋ฅ ๋ชฉ๋ก์ด ์ ์ ๋์ํจ์ ํ ์คํธ ์ฝ๋๋ก ํ์ธํ๋ค.### ์ถ๊ฐ๋ ์๊ตฌ ์ฌํญ
- ํจ์(๋๋ ๋ฉ์๋)์ ๊ธธ์ด๊ฐ 15๋ผ์ธ์ ๋์ด๊ฐ์ง ์๋๋ก ๊ตฌํํ๋ค.
- ํจ์(๋๋ ๋ฉ์๋)๊ฐ ํ ๊ฐ์ง ์ผ๋ง ์ ํ๋๋ก ๊ตฌํํ๋ค.
- else ์์ฝ์ด๋ฅผ ์ฐ์ง ์๋๋ค.
- ํํธ: if ์กฐ๊ฑด์ ์์ ๊ฐ์ returnํ๋ ๋ฐฉ์์ผ๋ก ๊ตฌํํ๋ฉด else๋ฅผ ์ฌ์ฉํ์ง ์์๋ ๋๋ค.
- else๋ฅผ ์ฐ์ง ๋ง๋ผ๊ณ ํ๋ switch/case๋ก ๊ตฌํํ๋ ๊ฒฝ์ฐ๊ฐ ์๋๋ฐ switch/case๋ ํ์ฉํ์ง ์๋๋ค.
- Java Enum์ ์ ์ฉํ๋ค.
- ๋๋ฉ์ธ ๋ก์ง์ ๋จ์ ํ ์คํธ๋ฅผ ๊ตฌํํด์ผ ํ๋ค. ๋จ, UI(System.out, System.in, Scanner) ๋ก์ง์ ์ ์ธํ๋ค.
- ํต์ฌ ๋ก์ง์ ๊ตฌํํ๋ ์ฝ๋์ UI๋ฅผ ๋ด๋นํ๋ ๋ก์ง์ ๋ถ๋ฆฌํด ๊ตฌํํ๋ค.
- ๋จ์ ํ ์คํธ ์์ฑ์ด ์ต์ํ์ง ์๋ค๋ฉด `test/java/lotto/LottoTest`๋ฅผ ์ฐธ๊ณ ํ์ฌ ํ์ตํ ํ ํ ์คํธ๋ฅผ ๊ตฌํํ๋ค.### ๋ผ์ด๋ธ๋ฌ๋ฆฌ
- [`camp.nextstep.edu.missionutils`](https://github.com/woowacourse-projects/mission-utils)์์ ์ ๊ณตํ๋ `Randoms` ๋ฐ `Console` API๋ฅผ ์ฌ์ฉํ์ฌ ๊ตฌํํด์ผ ํ๋ค.
- Random ๊ฐ ์ถ์ถ์ `camp.nextstep.edu.missionutils.Randoms`์ `pickUniqueNumbersInRange()`๋ฅผ ํ์ฉํ๋ค.
- ์ฌ์ฉ์๊ฐ ์ ๋ ฅํ๋ ๊ฐ์ `camp.nextstep.edu.missionutils.Console`์ `readLine()`์ ํ์ฉํ๋ค.#### ์ฌ์ฉ ์์
```java
List numbers = Randoms.pickUniqueNumbersInRange(1, 45, 6);
```### Lotto ํด๋์ค
- ์ ๊ณต๋ `Lotto` ํด๋์ค๋ฅผ ํ์ฉํด ๊ตฌํํด์ผ ํ๋ค.
- `Lotto`์ ๋งค๊ฐ ๋ณ์๊ฐ ์๋ ์์ฑ์๋ฅผ ์ถ๊ฐํ ์ ์๋ค.
- `numbers`์ ์ ๊ทผ ์ ์ด์์ธ private์ ๋ณ๊ฒฝํ ์ ์๋ค.
- `Lotto`์ ํ๋(์ธ์คํด์ค ๋ณ์)๋ฅผ ์ถ๊ฐํ ์ ์๋ค.
- `Lotto`์ ํจํค์ง ๋ณ๊ฒฝ์ ๊ฐ๋ฅํ๋ค.```java
public class Lotto {
private final List numbers;public Lotto(List numbers) {
validate(numbers);
this.numbers = numbers;
}private void validate(List numbers) {
if (numbers.size() != 6) {
throw new IllegalArgumentException();
}
}// TODO: ์ถ๊ฐ ๊ธฐ๋ฅ ๊ตฌํ
}
```---
## โ๏ธ ๊ณผ์ ์งํ ์๊ตฌ ์ฌํญ
- ๋ฏธ์ ์ [java-lotto](https://github.com/woowacourse-precourse/java-lotto) ์ ์ฅ์๋ฅผ Fork & Cloneํด ์์ํ๋ค.
- **๊ธฐ๋ฅ์ ๊ตฌํํ๊ธฐ ์ `docs/README.md`์ ๊ตฌํํ ๊ธฐ๋ฅ ๋ชฉ๋ก์ ์ ๋ฆฌ**ํด ์ถ๊ฐํ๋ค.
- **Git์ ์ปค๋ฐ ๋จ์๋ ์ ๋จ๊ณ์์ `docs/README.md`์ ์ ๋ฆฌํ ๊ธฐ๋ฅ ๋ชฉ๋ก ๋จ์**๋ก ์ถ๊ฐํ๋ค.
- [์ปค๋ฐ ๋ฉ์์ง ์ปจ๋ฒค์ ](https://gist.github.com/stephenparish/9941e89d80e2bc58a153) ๊ฐ์ด๋๋ฅผ ์ฐธ๊ณ ํด ์ปค๋ฐ ๋ฉ์์ง๋ฅผ ์์ฑํ๋ค.
- ๊ณผ์ ์งํ ๋ฐ ์ ์ถ ๋ฐฉ๋ฒ์ [ํ๋ฆฌ์ฝ์ค ๊ณผ์ ์ ์ถ](https://github.com/woowacourse/woowacourse-docs/tree/master/precourse) ๋ฌธ์๋ฅผ ์ฐธ๊ณ ํ๋ค.