‡๐Ÿ‘ฉ‍๐Ÿ’ป ‡/º Java

[์šฐ์•„ํ•œ ํ…Œํฌ์ฝ”์Šค] 2์ฃผ์ฐจ - ์ˆซ์ž ์•ผ๊ตฌ ๊ฒŒ์ž„

Trudy | ์†ก์—ฐ 2023. 11. 20. 11:46
# ๋ฏธ์…˜ - ์ˆซ์ž ์•ผ๊ตฌ

## ๐Ÿ” ์ง„ํ–‰ ๋ฐฉ์‹

- ๋ฏธ์…˜์€ **๊ธฐ๋Šฅ ์š”๊ตฌ ์‚ฌํ•ญ, ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์š”๊ตฌ ์‚ฌํ•ญ, ๊ณผ์ œ ์ง„ํ–‰ ์š”๊ตฌ ์‚ฌํ•ญ** ์„ธ ๊ฐ€์ง€๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค.
- ์„ธ ๊ฐœ์˜ ์š”๊ตฌ ์‚ฌํ•ญ์„ ๋งŒ์กฑํ•˜๊ธฐ ์œ„ํ•ด ๋…ธ๋ ฅํ•œ๋‹ค. ํŠนํžˆ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์ „์— ๊ธฐ๋Šฅ ๋ชฉ๋ก์„ ๋งŒ๋“ ๋‹ค.
- ๊ธฐ๋Šฅ ์š”๊ตฌ ์‚ฌํ•ญ์— ๊ธฐ์žฌ๋˜์ง€ ์•Š์€ ๋‚ด์šฉ์€ ์Šค์Šค๋กœ ํŒ๋‹จํ•˜์—ฌ ๊ตฌํ˜„ํ•œ๋‹ค.

## ๐Ÿ“ฎ ๋ฏธ์…˜ ์ œ์ถœ ๋ฐฉ๋ฒ•

- ๋ฏธ์…˜ ๊ตฌํ˜„์„ ์™„๋ฃŒํ•œ ํ›„ 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 ๋ฒ„์ „์ด 17์ธ์ง€ ํ™•์ธํ•œ๋‹ค.
  Eclipse ๋˜๋Š” IntelliJ IDEA์™€ ๊ฐ™์€ IDE์—์„œ Java 17๋กœ ์‹คํ–‰๋˜๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.
- ํ„ฐ๋ฏธ๋„์—์„œ Mac ๋˜๋Š” Linux ์‚ฌ์šฉ์ž์˜ ๊ฒฝ์šฐ `./gradlew clean test` ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๊ณ ,
  Windows ์‚ฌ์šฉ์ž์˜ ๊ฒฝ์šฐ `gradlew.bat clean test` ๋˜๋Š” `./gradlew.bat clean test` ๋ช…๋ น์„ ์‹คํ–‰ํ•  ๋•Œ ๋ชจ๋“  ํ…Œ์ŠคํŠธ๊ฐ€ ์•„๋ž˜์™€ ๊ฐ™์ด ํ†ต๊ณผํ•˜๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.

```
BUILD SUCCESSFUL in 0s
```

---

## ๐Ÿš€ ๊ธฐ๋Šฅ ์š”๊ตฌ ์‚ฌํ•ญ

๊ธฐ๋ณธ์ ์œผ๋กœ 1๋ถ€ํ„ฐ 9๊นŒ์ง€ ์„œ๋กœ ๋‹ค๋ฅธ ์ˆ˜๋กœ ์ด๋ฃจ์–ด์ง„ 3์ž๋ฆฌ์˜ ์ˆ˜๋ฅผ ๋งž์ถ”๋Š” ๊ฒŒ์ž„์ด๋‹ค.

- ๊ฐ™์€ ์ˆ˜๊ฐ€ ๊ฐ™์€ ์ž๋ฆฌ์— ์žˆ์œผ๋ฉด ์ŠคํŠธ๋ผ์ดํฌ, ๋‹ค๋ฅธ ์ž๋ฆฌ์— ์žˆ์œผ๋ฉด ๋ณผ, ๊ฐ™์€ ์ˆ˜๊ฐ€ ์ „ํ˜€ ์—†์œผ๋ฉด ๋‚ซ์‹ฑ์ด๋ž€ ํžŒํŠธ๋ฅผ ์–ป๊ณ , ๊ทธ ํžŒํŠธ๋ฅผ ์ด์šฉํ•ด์„œ ๋จผ์ € ์ƒ๋Œ€๋ฐฉ(์ปดํ“จํ„ฐ)์˜ ์ˆ˜๋ฅผ ๋งž์ถ”๋ฉด ์Šน๋ฆฌํ•œ๋‹ค.
    - ์˜ˆ) ์ƒ๋Œ€๋ฐฉ(์ปดํ“จํ„ฐ)์˜ ์ˆ˜๊ฐ€ 425์ผ ๋•Œ
        - 123์„ ์ œ์‹œํ•œ ๊ฒฝ์šฐ : 1์ŠคํŠธ๋ผ์ดํฌ
        - 456์„ ์ œ์‹œํ•œ ๊ฒฝ์šฐ : 1๋ณผ 1์ŠคํŠธ๋ผ์ดํฌ
        - 789๋ฅผ ์ œ์‹œํ•œ ๊ฒฝ์šฐ : ๋‚ซ์‹ฑ
- ์œ„ ์ˆซ์ž ์•ผ๊ตฌ ๊ฒŒ์ž„์—์„œ ์ƒ๋Œ€๋ฐฉ์˜ ์—ญํ• ์„ ์ปดํ“จํ„ฐ๊ฐ€ ํ•œ๋‹ค. ์ปดํ“จํ„ฐ๋Š” 1์—์„œ 9๊นŒ์ง€ ์„œ๋กœ ๋‹ค๋ฅธ ์ž„์˜์˜ ์ˆ˜ 3๊ฐœ๋ฅผ ์„ ํƒํ•œ๋‹ค. ๊ฒŒ์ž„ ํ”Œ๋ ˆ์ด์–ด๋Š” ์ปดํ“จํ„ฐ๊ฐ€ ์ƒ๊ฐํ•˜๊ณ  ์žˆ๋Š” ์„œ๋กœ ๋‹ค๋ฅธ 3๊ฐœ์˜ ์ˆซ์ž๋ฅผ ์ž…๋ ฅํ•˜๊ณ , ์ปดํ“จํ„ฐ๋Š” ์ž…๋ ฅํ•œ ์ˆซ์ž์— ๋Œ€ํ•œ
  ๊ฒฐ๊ณผ๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.
- ์ด ๊ฐ™์€ ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•ด ์ปดํ“จํ„ฐ๊ฐ€ ์„ ํƒํ•œ 3๊ฐœ์˜ ์ˆซ์ž๋ฅผ ๋ชจ๋‘ ๋งžํžˆ๋ฉด ๊ฒŒ์ž„์ด ์ข…๋ฃŒ๋œ๋‹ค.
- ๊ฒŒ์ž„์„ ์ข…๋ฃŒํ•œ ํ›„ ๊ฒŒ์ž„์„ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜๊ฑฐ๋‚˜ ์™„์ „ํžˆ ์ข…๋ฃŒํ•  ์ˆ˜ ์žˆ๋‹ค.
- ์‚ฌ์šฉ์ž๊ฐ€ ์ž˜๋ชป๋œ ๊ฐ’์„ ์ž…๋ ฅํ•  ๊ฒฝ์šฐ `IllegalArgumentException`์„ ๋ฐœ์ƒ์‹œํ‚จ ํ›„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ์ข…๋ฃŒ๋˜์–ด์•ผ ํ•œ๋‹ค.

### ์ž…์ถœ๋ ฅ ์š”๊ตฌ ์‚ฌํ•ญ

#### ์ž…๋ ฅ

- ์„œ๋กœ ๋‹ค๋ฅธ 3์ž๋ฆฌ์˜ ์ˆ˜
- ๊ฒŒ์ž„์ด ๋๋‚œ ๊ฒฝ์šฐ ์žฌ์‹œ์ž‘/์ข…๋ฃŒ๋ฅผ ๊ตฌ๋ถ„ํ•˜๋Š” 1๊ณผ 2 ์ค‘ ํ•˜๋‚˜์˜ ์ˆ˜

#### ์ถœ๋ ฅ

- ์ž…๋ ฅํ•œ ์ˆ˜์— ๋Œ€ํ•œ ๊ฒฐ๊ณผ๋ฅผ ๋ณผ, ์ŠคํŠธ๋ผ์ดํฌ ๊ฐœ์ˆ˜๋กœ ํ‘œ์‹œ

```
1๋ณผ 1์ŠคํŠธ๋ผ์ดํฌ
```

- ํ•˜๋‚˜๋„ ์—†๋Š” ๊ฒฝ์šฐ

```
๋‚ซ์‹ฑ
```

- 3๊ฐœ์˜ ์ˆซ์ž๋ฅผ ๋ชจ๋‘ ๋งžํž ๊ฒฝ์šฐ

```
3์ŠคํŠธ๋ผ์ดํฌ
3๊ฐœ์˜ ์ˆซ์ž๋ฅผ ๋ชจ๋‘ ๋งžํžˆ์…จ์Šต๋‹ˆ๋‹ค! ๊ฒŒ์ž„ ์ข…๋ฃŒ
```

- ๊ฒŒ์ž„ ์‹œ์ž‘ ๋ฌธ๊ตฌ ์ถœ๋ ฅ

```
์ˆซ์ž ์•ผ๊ตฌ ๊ฒŒ์ž„์„ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.
``` 

#### ์‹คํ–‰ ๊ฒฐ๊ณผ ์˜ˆ์‹œ

```
์ˆซ์ž ์•ผ๊ตฌ ๊ฒŒ์ž„์„ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.
์ˆซ์ž๋ฅผ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š” : 123
1๋ณผ 1์ŠคํŠธ๋ผ์ดํฌ
์ˆซ์ž๋ฅผ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š” : 145
1๋ณผ
์ˆซ์ž๋ฅผ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š” : 671
2๋ณผ
์ˆซ์ž๋ฅผ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š” : 216
1์ŠคํŠธ๋ผ์ดํฌ
์ˆซ์ž๋ฅผ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š” : 713
3์ŠคํŠธ๋ผ์ดํฌ
3๊ฐœ์˜ ์ˆซ์ž๋ฅผ ๋ชจ๋‘ ๋งžํžˆ์…จ์Šต๋‹ˆ๋‹ค! ๊ฒŒ์ž„ ์ข…๋ฃŒ
๊ฒŒ์ž„์„ ์ƒˆ๋กœ ์‹œ์ž‘ํ•˜๋ ค๋ฉด 1, ์ข…๋ฃŒํ•˜๋ ค๋ฉด 2๋ฅผ ์ž…๋ ฅํ•˜์„ธ์š”.
1
์ˆซ์ž๋ฅผ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š” : 123
1๋ณผ
...
```

---

## ๐ŸŽฏ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์š”๊ตฌ ์‚ฌํ•ญ

- JDK 17 ๋ฒ„์ „์—์„œ ์‹คํ–‰ ๊ฐ€๋Šฅํ•ด์•ผ ํ•œ๋‹ค. **JDK 17์—์„œ ์ •์ƒ์ ์œผ๋กœ ๋™์ž‘ํ•˜์ง€ ์•Š์„ ๊ฒฝ์šฐ 0์  ์ฒ˜๋ฆฌํ•œ๋‹ค.**
- ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰์˜ ์‹œ์ž‘์ ์€ `Application`์˜ `main()`์ด๋‹ค.
- `build.gradle` ํŒŒ์ผ์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†๊ณ , ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค.
- [Java ์ฝ”๋“œ ์ปจ๋ฒค์…˜](https://github.com/woowacourse/woowacourse-docs/tree/master/styleguide/java) ๊ฐ€์ด๋“œ๋ฅผ ์ค€์ˆ˜ํ•˜๋ฉฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐํ•œ๋‹ค.
- ํ”„๋กœ๊ทธ๋žจ ์ข…๋ฃŒ ์‹œ `System.exit()`๋ฅผ ํ˜ธ์ถœํ•˜์ง€ ์•Š๋Š”๋‹ค.
- ํ”„๋กœ๊ทธ๋žจ ๊ตฌํ˜„์ด ์™„๋ฃŒ๋˜๋ฉด `ApplicationTest`์˜ ๋ชจ๋“  ํ…Œ์ŠคํŠธ๊ฐ€ ์„ฑ๊ณตํ•ด์•ผ ํ•œ๋‹ค. **ํ…Œ์ŠคํŠธ๊ฐ€ ์‹คํŒจํ•  ๊ฒฝ์šฐ 0์  ์ฒ˜๋ฆฌํ•œ๋‹ค.**
- ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์š”๊ตฌ ์‚ฌํ•ญ์—์„œ ๋‹ฌ๋ฆฌ ๋ช…์‹œํ•˜์ง€ ์•Š๋Š” ํ•œ ํŒŒ์ผ, ํŒจํ‚ค์ง€ ์ด๋ฆ„์„ ์ˆ˜์ •ํ•˜๊ฑฐ๋‚˜ ์ด๋™ํ•˜์ง€ ์•Š๋Š”๋‹ค.

### ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

- `camp.nextstep.edu.missionutils`์—์„œ ์ œ๊ณตํ•˜๋Š” `Randoms` ๋ฐ `Console` API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌํ˜„ํ•ด์•ผ ํ•œ๋‹ค.
    - Random ๊ฐ’ ์ถ”์ถœ์€ `camp.nextstep.edu.missionutils.Randoms`์˜ `pickNumberInRange()`๋ฅผ ํ™œ์šฉํ•œ๋‹ค.
    - ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•˜๋Š” ๊ฐ’์€ `camp.nextstep.edu.missionutils.Console`์˜ `readLine()`์„ ํ™œ์šฉํ•œ๋‹ค.

#### ์‚ฌ์šฉ ์˜ˆ์‹œ

```java
List<Integer> computer = new ArrayList<>();
while (computer.size() < 3) {
    int randomNumber = Randoms.pickNumberInRange(1, 9);
    if (!computer.contains(randomNumber)) {
        computer.add(randomNumber);
    }
}
```

---

## โœ๏ธ ๊ณผ์ œ ์ง„ํ–‰ ์š”๊ตฌ ์‚ฌํ•ญ

- ๋ฏธ์…˜์€ [java-baseball-6](https://github.com/woowacourse-precourse/java-baseball-6) ์ €์žฅ์†Œ๋ฅผ Fork & Cloneํ•ด ์‹œ์ž‘ํ•œ๋‹ค.
- **๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์ „ `docs/README.md`์— ๊ตฌํ˜„ํ•  ๊ธฐ๋Šฅ ๋ชฉ๋ก์„ ์ •๋ฆฌ**ํ•ด ์ถ”๊ฐ€ํ•œ๋‹ค.
- ๊ณผ์ œ ์ง„ํ–‰ ๋ฐ ์ œ์ถœ ๋ฐฉ๋ฒ•์€ [ํ”„๋ฆฌ์ฝ”์Šค ๊ณผ์ œ ์ œ์ถœ](https://github.com/woowacourse/woowacourse-docs/tree/master/precourse) ๋ฌธ์„œ๋ฅผ ์ฐธ๊ณ ํ•œ๋‹ค.

 

import java.util.Scanner;

//class game{
//    int start(){
//
//    }
////    int hint(int guess[], int answer[]){
////
////    }
//}8

public class main {
    public static void main(String[] args){
        int[] answer = new int[3];
        answer[0]= (int)(Math.random()*1000%9);
        answer[1]= (int)(Math.random()*1000%9);
        answer[2]= (int)(Math.random()*1000%9);

        System.out.println(answer[0] + "" + answer[1] +""+ answer[2]);

        Scanner sc = new Scanner(System.in);
        int[] guess  = new int[3];
        int s=1; int b;
        System.out.println("์ˆซ์ž ์•ผ๊ตฌ ๊ฒŒ์ž„์„ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.");
        while(s<3) {
            System.out.print("์ˆซ์ž๋ฅผ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š” : ");
            int x = Integer.parseInt(sc.next());

            int a = 100;
            for (int i = 0; i < 3; i++) {
                guess[i] = x / a;
                x -= a * guess[i];
                a /= 10;
            }
            System.out.println(guess[0] + "" + guess[1] + "" + guess[2]);

            s = 0; b = 0;
            for (int i = 0; i < 3; i++) {
                for (int j = 0; j < 3; j++) {
                    if (guess[i] == answer[i]) {
                        s++;
                        break;
                    } else if (guess[i] == answer[j]) {
                        b++;
                    }
                }
            }
            if (s == 0 && b == 0) System.out.println("๋‚ซ์‹ฑ");
            else if (s == 3) System.out.println("3์ŠคํŠธ๋ผ์ดํฌ\n3๊ฐœ์˜ ์ˆซ์ž๋ฅผ ๋ชจ๋‘ ๋งžํžˆ์…จ์Šต๋‹ˆ๋‹ค! ๊ฒŒ์ž„ ์ข…๋ฃŒ");
            else System.out.println(b + "๋ณผ " + s + "์ŠคํŠธ๋ผ์ดํฌ");
        }
    }
}