- ๋ฏธ์ ์ ๊ธฐ๋ฅ ์๊ตฌ ์ฌํญ, ํ๋ก๊ทธ๋๋ฐ ์๊ตฌ ์ฌํญ, ๊ณผ์ ์งํ ์๊ตฌ ์ฌํญ ์ธ ๊ฐ์ง๋ก ๊ตฌ์ฑ๋์ด ์๋ค.
- ์ธ ๊ฐ์ ์๊ตฌ ์ฌํญ์ ๋ง์กฑํ๊ธฐ ์ํด ๋ ธ๋ ฅํ๋ค. ํนํ ๊ธฐ๋ฅ์ ๊ตฌํํ๊ธฐ ์ ์ ๊ธฐ๋ฅ ๋ชฉ๋ก์ ๋ง๋ ๋ค.
- ๊ธฐ๋ฅ ์๊ตฌ ์ฌํญ์ ๊ธฐ์ฌ๋์ง ์์ ๋ด์ฉ์ ์ค์ค๋ก ํ๋จํ์ฌ ๊ตฌํํ๋ค.
- ๋ฏธ์
๊ตฌํ์ ์๋ฃํ ํ GitHub์ ํตํด ์ ์ถํด์ผ ํ๋ค.
- GitHub์ ํ์ฉํ ์ ์ถ ๋ฐฉ๋ฒ์ ํ๋ฆฌ์ฝ์ค ๊ณผ์ ์ ์ถ ๋ฌธ์๋ฅผ ์ฐธ๊ณ ํด ์ ์ถํ๋ค.
- GitHub์ ๋ฏธ์
์ ์ ์ถํ ํ ์ฐ์ํํ
ํฌ์ฝ์ค ์ง์ ์ฌ์ดํธ์ ์ ์ํ์ฌ ํ๋ฆฌ์ฝ์ค ๊ณผ์ ๋ฅผ ์ ์ถํ๋ค.
- ์์ธํ ๋ฐฉ๋ฒ์ ์ ์ถ ๊ฐ์ด๋ ์ฐธ๊ณ
- Pull Request๋ง ๋ณด๋ด๊ณ ์ง์ ํ๋ซํผ์์ ๊ณผ์ ๋ฅผ ์ ์ถํ์ง ์์ผ๋ฉด ์ต์ข ์ ์ถํ์ง ์์ ๊ฒ์ผ๋ก ์ฒ๋ฆฌ๋๋ ์ฃผ์ํ๋ค.
- ๊ธฐ๋ฅ ๊ตฌํ์ ๋ชจ๋ ์ ์์ ์ผ๋ก ํ๋๋ผ๋ ์๊ตฌ ์ฌํญ์ ๋ช ์๋ ์ถ๋ ฅ๊ฐ ํ์์ ์งํค์ง ์์ ๊ฒฝ์ฐ 0์ ์ผ๋ก ์ฒ๋ฆฌํ๋ค.
- ๊ธฐ๋ฅ ๊ตฌํ์ ์๋ฃํ ๋ค ์๋ ๊ฐ์ด๋์ ๋ฐ๋ผ ํ ์คํธ๋ฅผ ์คํํ์ ๋ ๋ชจ๋ ํ ์คํธ๊ฐ ์ฑ๊ณตํ๋์ง ํ์ธํ๋ค.
- ํ ์คํธ๊ฐ ์คํจํ ๊ฒฝ์ฐ 0์ ์ผ๋ก ์ฒ๋ฆฌ๋๋ฏ๋ก, ๋ฐ๋์ ํ์ธ ํ ์ ์ถํ๋ค.
- ํ
์คํธ ํจํค์ง ์ค์น๋ฅผ ์ํด
Node.js
๋ฒ์ 18.17.1
์ด์์ด ํ์ํ๋ค. - ๋ค์ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํด ํจํค์ง๋ฅผ ์ค์นํ๋ค.
npm install
- ์ค์น๊ฐ ์๋ฃ๋์๋ค๋ฉด, ๋ค์ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํด ํ ์คํธ๋ฅผ ์คํํ๋ค.
npm test
๊ธฐ๋ณธ์ ์ผ๋ก 1๋ถํฐ 9๊น์ง ์๋ก ๋ค๋ฅธ ์๋ก ์ด๋ฃจ์ด์ง 3์๋ฆฌ์ ์๋ฅผ ๋ง์ถ๋ ๊ฒ์์ด๋ค.
- ๊ฐ์ ์๊ฐ ๊ฐ์ ์๋ฆฌ์ ์์ผ๋ฉด ์คํธ๋ผ์ดํฌ, ๋ค๋ฅธ ์๋ฆฌ์ ์์ผ๋ฉด ๋ณผ, ๊ฐ์ ์๊ฐ ์ ํ ์์ผ๋ฉด ๋ซ์ฑ์ด๋ ํํธ๋ฅผ ์ป๊ณ , ๊ทธ ํํธ๋ฅผ ์ด์ฉํด์ ๋จผ์ ์๋๋ฐฉ(์ปดํจํฐ)์ ์๋ฅผ ๋ง์ถ๋ฉด ์น๋ฆฌํ๋ค.
- ์) ์๋๋ฐฉ(์ปดํจํฐ)์ ์๊ฐ 425์ผ ๋
- 123์ ์ ์ํ ๊ฒฝ์ฐ : 1์คํธ๋ผ์ดํฌ
- 456์ ์ ์ํ ๊ฒฝ์ฐ : 1๋ณผ 1์คํธ๋ผ์ดํฌ
- 789๋ฅผ ์ ์ํ ๊ฒฝ์ฐ : ๋ซ์ฑ
- ์) ์๋๋ฐฉ(์ปดํจํฐ)์ ์๊ฐ 425์ผ ๋
- ์ ์ซ์ ์ผ๊ตฌ ๊ฒ์์์ ์๋๋ฐฉ์ ์ญํ ์ ์ปดํจํฐ๊ฐ ํ๋ค. ์ปดํจํฐ๋ 1์์ 9๊น์ง ์๋ก ๋ค๋ฅธ ์์์ ์ 3๊ฐ๋ฅผ ์ ํํ๋ค. ๊ฒ์ ํ๋ ์ด์ด๋ ์ปดํจํฐ๊ฐ ์๊ฐํ๊ณ ์๋ ์๋ก ๋ค๋ฅธ 3๊ฐ์ ์ซ์๋ฅผ ์ ๋ ฅํ๊ณ , ์ปดํจํฐ๋ ์ ๋ ฅํ ์ซ์์ ๋ํ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ๋ค.
- ์ด ๊ฐ์ ๊ณผ์ ์ ๋ฐ๋ณตํด ์ปดํจํฐ๊ฐ ์ ํํ 3๊ฐ์ ์ซ์๋ฅผ ๋ชจ๋ ๋งํ๋ฉด ๊ฒ์์ด ์ข ๋ฃ๋๋ค.
- ๊ฒ์์ ์ข ๋ฃํ ํ ๊ฒ์์ ๋ค์ ์์ํ๊ฑฐ๋ ์์ ํ ์ข ๋ฃํ ์ ์๋ค.
- ์ฌ์ฉ์๊ฐ ์๋ชป๋ ๊ฐ์ ์
๋ ฅํ ๊ฒฝ์ฐ
throw
๋ฌธ์ ์ฌ์ฉํด ์์ธ๋ฅผ ๋ฐ์์ํจํ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ข ๋ฃ๋์ด์ผ ํ๋ค.
- ์๋ก ๋ค๋ฅธ 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๋ณผ
...
- Node.js 18.17.1 ๋ฒ์ ์์ ์คํ ๊ฐ๋ฅํด์ผ ํ๋ค. Node.js 18.17.1์์ ์ ์์ ์ผ๋ก ๋์ํ์ง ์์ ๊ฒฝ์ฐ 0์ ์ฒ๋ฆฌํ๋ค.
- ํ๋ก๊ทธ๋จ ์คํ์ ์์์ ์
App.js
์play
๋ฉ์๋์ด๋ค. ์๋์ ๊ฐ์ด ํ๋ก๊ทธ๋จ์ ์คํ์ํฌ ์ ์์ด์ผ ํ๋ค.
์์
const app = new App();
app.play();
package.json
์ ๋ณ๊ฒฝํ ์ ์๊ณ ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ(jQuery, Lodash ๋ฑ)๋ฅผ ์ฌ์ฉํ์ง ์๋๋ค. ์์ Vanilla JS๋ก๋ง ๊ตฌํํ๋ค.- JavaScript ์ฝ๋ ์ปจ๋ฒค์ ์ ์งํค๋ฉด์ ํ๋ก๊ทธ๋๋ฐ ํ๋ค
- ํ๋ก๊ทธ๋จ ์ข
๋ฃ ์
process.exit()
๋ฅผ ํธ์ถํ์ง ์๋๋ค. - ํ๋ก๊ทธ๋จ ๊ตฌํ์ด ์๋ฃ๋๋ฉด
ApplicationTest
์ ๋ชจ๋ ํ ์คํธ๊ฐ ์ฑ๊ณตํด์ผ ํ๋ค. ํ ์คํธ๊ฐ ์คํจํ ๊ฒฝ์ฐ 0์ ์ฒ๋ฆฌํ๋ค. - ํ๋ก๊ทธ๋๋ฐ ์๊ตฌ ์ฌํญ์์ ๋ฌ๋ฆฌ ๋ช ์ํ์ง ์๋ ํ ํ์ผ, ํจํค์ง ์ด๋ฆ์ ์์ ํ๊ฑฐ๋ ์ด๋ํ์ง ์๋๋ค.
@woowacourse/mission-utils
์Random
๋ฐConsole
API๋ฅผ ์ฌ์ฉํ์ฌ ๊ตฌํํด์ผ ํ๋ค.- Random ๊ฐ ์ถ์ถ์
Random.pickNumberInRange()
๋ฅผ ํ์ฉํ๋ค. - ์ฌ์ฉ์์ ๊ฐ์ ์
๋ ฅ ๋ฐ๊ณ ์ถ๋ ฅํ๊ธฐ ์ํด์๋
Console.readLineAsync
,Console.print
๋ฅผ ํ์ฉํ๋ค.
- Random ๊ฐ ์ถ์ถ์
const computer = [];
while (computer.length < 3) {
const number = MissionUtils.Random.pickNumberInRange(1, 9);
if (!computer.includes(number)) {
computer.push(number);
}
}
- ๋ฏธ์ ์ javascript-baseball ์ ์ฅ์๋ฅผ Fork & Cloneํด ์์ํ๋ค.
- ๊ธฐ๋ฅ์ ๊ตฌํํ๊ธฐ ์
docs/README.md
์ ๊ตฌํํ ๊ธฐ๋ฅ ๋ชฉ๋ก์ ์ ๋ฆฌํด ์ถ๊ฐํ๋ค. - ๊ณผ์ ์งํ ๋ฐ ์ ์ถ ๋ฐฉ๋ฒ์ ํ๋ฆฌ์ฝ์ค ๊ณผ์ ์ ์ถ ๋ฌธ์๋ฅผ ์ฐธ๊ณ ํ๋ค.