๐Ÿ“š FrontEnd -Study/JavaScript

์ˆซ์ž์•ผ๊ตฌ ๊ฒŒ์ž„

ChaeLOTUS 2023. 2. 22. 23:45
728x90

์ œ๋กœ์ดˆ๋‹˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ ๊ฒŒ์ž„๋งŒ๋“œ๋Š” ๊ฐ•์˜๋ฅผ ๋ณด๊ณ  ์‹ค์Šต์„ ํ•ด์˜ค๋‹ค๊ฐ€ ์ง€๋ขฐ์ฐพ๊ธฐ ๊ฒŒ์ž„ ๋ถ€๋ถ„๋ถ€ํ„ฐ๋Š” ๋„ˆ๋ฌด ๋ณต์žกํ•˜๊ณ  ์–ด๋ ค์›Œ์„œ ์ž ์‹œ ๊ทธ ์ „์— ํ–ˆ๋˜ ๊ฒŒ์ž„๋“ค์„ ํ˜ผ์ž ํž˜์œผ๋กœ ์ฝ”๋”ฉ์„ ํ•ด๋ณด๋Š” ์‹œ๊ฐ„์„ ๊ฐ€์ง€๊ธฐ๋กœ ํ–ˆ๋‹ค.

๊ฐ•์˜๋ฅผ ๋“ฃ๋‹ค๋ณด๋ฉด ์žฌ์ƒ์„ ์ž ์‹œ ๋ฉˆ์ถฐ๋‘์—ˆ๋‹ค๊ฐ€ ํ˜ผ์ž ์ฝ”๋”ฉ ํ•ด๋ณด๋ ค๊ณ  ํ•ด๋„ ์•ž์— ์˜์ƒ์ด ์žˆ๊ณ  ๋ช‡ ์ดˆ๋งŒ ๋„˜๊ธฐ๋ฉด ์ฝ”๋“œ๋ฅผ ๋ณด๊ฒŒ ๋˜๋‹ค๋ณด๋‹ˆ

์™„์ „ํ•œ ๋‚ด๊ฒƒ์ด ์•„๋‹Œ ๋А๋‚Œ์ด ๋“ค๊ธด ํ–ˆ์—ˆ๋‹ค.

์›๋ž˜๋Š” ๊ณ„์‚ฐ๊ธฐ๋งŒ๋“œ๋Š” ๊ฒƒ ๋ถ€ํ„ฐ ํ•˜๋ ค๊ณ  ํ–ˆ์œผ๋‚˜ ์ง€๊ธˆ ์ˆ˜๊ฐ•์ค‘์ธ ์ฝ”๋“œ์Šคํ…Œ์ด์ธ ์—์„œ ๊ณ„์‚ฐ๊ธฐ๋ฅผ ๋งŒ๋“ค ์˜ˆ์ •์ด๋ผ

์ˆซ์ž์•ผ๊ตฌ๋ถ€ํ„ฐ ์ฐจ๊ธˆ์ฐจ๊ธˆ ํ•ด๋ณด๋Š” ๊ฑธ๋กœ!!

 

 

 

๋จผ์ € ์ˆซ์ž์•ผ๊ตฌ ๊ฒŒ์ž„์˜ ๋ฃฐ์€

์ปดํ“จํ„ฐ๊ฐ€ 1 - 9๊นŒ์ง€์˜ ์ค‘๋ณต๋˜์ง€ ์•Š๋Š” ์ˆซ์ž 4๊ฐœ๋ฅผ ๋ฝ‘๋Š”๋‹ค.

๊ฒŒ์ž„์„ ํ•˜๋Š” ์œ ์ €๋Š” ์ด 10๋ฒˆ์˜ ๊ธฐํšŒ๊ฐ€ ์žˆ๊ณ  ์ปดํ“จํ„ฐ๊ฐ€ ๋žœ๋ค์œผ๋กœ ๊ณ ๋ฅธ 4๊ฐœ์˜ ์ˆซ์ž๋ฅผ ๋งž์ถ”๋ฉด ๋œ๋‹ค.

์ด๋•Œ, ์ˆซ์ž๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ˆœ์„œ๊นŒ์ง€ ๋งž์ถฐ์•ผ ํ•œ๋‹ค. ํ‹€๋ฆด ๋•Œ ๋งˆ๋‹ค ํžŒํŠธ๋Š” ์ค€๋‹ค.

๋งŒ์•ฝ 5728์ด๋ผ๋Š” ์ˆซ์ž๊ฐ€ ์ •๋‹ต์ด๊ณ  ๋‚˜๋Š” 7129๋ผ๋Š” ๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•˜์˜€์œผ๋ฉด

1์ŠคํŠธ๋ผ์ดํฌ(์ˆœ์„œ๊นŒ์ง€ ๋งž์ถ˜ ๊ฒฝ์šฐ) 1๋ณผ(์ˆซ์ž๊ฐ€ ํฌํ•จ๋งŒ ๋˜์–ด์žˆ์œผ๋ฉด)์ด๋ผ๋Š” ํžŒํŠธ๋ฅผ ์ค€๋‹ค.

 

 

์ˆซ์ž์•ผ๊ตฌ์˜ ์ˆœ์„œ๋„๋ฅผ ๋ณด๋ฉด ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

์ˆœ์„œ๋„ ๊ทธ๋ฆฌ๋Š” ์Šต๊ด€๋„ ์ข€ ๊ธธ๋Ÿฌ์•ผ ํ• ํ…๋ฐ.. ์•„์ง ๊ทธ๋ฆฌ๋Š”๋ฐ์— ์ต์ˆ™ํ•˜์ง€๊ฐ€ ์•Š๋‹ค.

1. ์ˆซ์ž ๋žœ๋ค์œผ๋กœ 4๊ฐœ ๋ฝ‘๊ธฐ

๋‚ด๊ฐ€ ์ž‘์„ฑํ•œ ์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. ์˜›๋‚ ์—๋Š” ์˜ค๋กœ์ง€ Math.random()๋งŒ ์‚ฌ์šฉํ•˜์˜€๋”๋ผ๋ฉด

์ œ๋กœ์ดˆ๋‹˜๊ป˜์„œ ๋ง์”€ํ•˜์‹œ๊ธธ ๊ฐ’์ด ๊ณจ๊ณ ๋กœ ๋‚˜์˜ค์ง€ ์•Š๋Š”๋‹ค๊ณ  ํ•œ๋‹ค.

๊ทธ๋ž˜์„œ ๋งŽ์ด๋“ค ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ํ”ผ์…” ์˜ˆ์ด์ธ  ์…”ํ”Œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค. (์ด๊ฒƒ์— ๊ด€ํ•œ ๋‚ด์šฉ์€ ๋”ฐ๋กœ ๊ธ€๋กœ ๋‚จ๊ฒจ๋‘์—ˆ์Œ.)

๋Œ€์ถฉ ์ฝ”๋“œ๋ฅผ ๋ณด์ž๋ฉด ๊ธธ์ด๊ฐ€ 9์ผ ๋ฐฐ์—ด์„ ๋งŒ๋“ค์–ด undefined๋กœ ๊ณต๊ฐ„์„ ์ฑ„์›Œ๋†“๊ณ  map์„ ์‚ฌ์šฉํ•ด 1๋ถ€ํ„ฐ 9๊นŒ์ง€์˜ ๊ฐ’์„ ์ฑ„์› ๋‹ค.

๊ทธ๋ฆฌ๊ณ  4๊ฐœ๋ฅผ ๋ฝ‘์•„์•ผํ•˜๋‹ˆ ๋žœ๋ค์œผ๋กœ ๋‚˜์˜จ ๋ฒˆํ˜ธ์˜ ์ˆœ์„œ์ธ ๊ฐ’์„ ํ•˜๋‚˜ ์ œ๊ฑฐํ•œ ๊ฐ’์„ value์— ๋„ฃ๊ณ  ๊ทธ๊ฒƒ์„ answer ๋ฐฐ์—ด์— ๋„ฃ์œผ๋ฉด ๋žœ๋คํ•œ ๊ฐ’ 4๊ฐœ๊ฐ€ ๋‚˜์˜จ๋‹ค.

 

์ œ๋กœ์ดˆ๋‹˜์˜ ์ฝ”๋“œ

let numbers = []
for (let n = 0; n <= 9; n += 1) {
    numbers.push(n)
}
let answer = []

for (let n = 0; n <= 3; n += 1) {
    const index = Math.floor(Math.random() * numbers.length) // 0 ~ 9 ์ •์ˆ˜
    answer.push(numbers[index])
    numbers.splice(index, 1)
}

์ด๋ ‡๊ฒŒ ๋ณด๋‹ˆ ๋‚ด ์ฝ”๋“œ๋„ ๊ทธ๋ ‡๊ฒŒ ๋‚˜์˜์ง„ ์•Š์€ ๊ฒƒ ๊ฐ™๋‹ค..!

 

 

2. ๋‹ต์„ ์ฒดํฌํ•˜๊ธฐ

์ผ๋‹จ ์—ฌ๊ธฐ์„œ ์ฐจ์ด๊ฐ€ ์žˆ์—ˆ๋˜ ๊ฒƒ์ด ์ œ๋กœ์ดˆ๋‹˜์€ ๋‹ต์„ ์ž…๋ ฅํ•  ๋•Œ 5136 ์ด๋Ÿฐ์‹์œผ๋กœ ์ž…๋ ฅํ•˜๋Š” ๊ฒƒ์„ ์ƒ๊ฐํ•œ ๋ฐ˜๋ฉด

๋‚˜๋Š” 5 1 3 6 ์ด๋Ÿฐ์‹์œผ๋กœ ํ•˜๊ณ  ์‹ถ์—ˆ๋‹ค.

๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ์•ฝ๊ฐ„์˜ ์ฐจ์ด๋Š” ์žˆ์ง€๋งŒ ํฐ ํ‹€์€ ๋น„์Šทํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ฝ”๋“œ๋ฅผ ๋น„๊ตํ•ด๋ณด๋ ค ํ•œ๋‹ค.

์ œ๋กœ์ดˆ๋‹˜์€ ๊ทธ๋ฆฌ๊ณ  ๊ฒ€์‚ฌํ•˜๋Š” if๋ฌธ๋“ค์„ ํ•จ์ˆ˜๋กœ ๋”ฐ๋กœ ๋งŒ๋“ค์–ด์„œ ์‚ฌ์šฉํ•˜์…จ๋‹ค.

๊ทธ๋ฆฌ๊ณ ๋Š” ๊ทธ ํ•จ์ˆ˜์˜ ๋ฆฌํ„ด๊ฐ’์ด true์ด๋ฉด ๋‹ค์Œ ๋™์ž‘๋“ค์ด ์‹คํ–‰์ด ๋˜๋„๋ก ๋ง์ด๋‹ค.

 

 

3. ํžŒํŠธ ์ฃผ๊ธฐ

์ด ๋ถ€๋ถ„์€ ์ €๊ธฐ ๊ฒฐ๊ณผ ๊ฐ’ ๋‚˜์˜ค๋Š” ๋ถ€๋ถ„์€ ์‚ด์ง ์ฐธ๊ณ  ํ–ˆ๋‹ค ใ… 

 

(value ๋Š” ์ž…๋ ฅํ•œ ๊ฐ’)

์ œ๋กœ์ดˆ๋‹˜์€ indexOf()๋ฅผ ์‚ฌ์šฉํ•˜์˜€๋‹ค.

์˜ˆ๋ฅผ๋“ค์–ด ์ •๋‹ต์ด 3146์ด๊ณ  ๋‚ด๊ฐ€ ์ž…๋ ฅํ•œ value๋Š” 1234์ด๋ฉด

i๊ฐ€ 0์ผ๋•Œ answer[0] ์€ 3์ด๊ณ  ์ด ๊ฐ’์ด value์˜ ๋ช‡๋ฒˆ์งธ์— ์žˆ๋ƒ๋Š” ๋ง์ด๋‹ค. ๊ทธ๋Ÿผ ์ €๊ธฐ ์ž‘์„ฑํ•œ index์˜ ๊ฐ’์€ 2๊ฐ€ ๋˜๊ฒ ๋‹ค.

์ผ์น˜ํ•˜๋Š” ์ˆซ์ž๊ฐ€ ๋ฐœ๊ฒฌ์ด ๋˜์—ˆ๋‹ค๋Š” ๊ฒƒ์€ 0์ด์ƒ์˜ ๊ฐ’์ด ์žˆ๋‹ค๋Š” ๋œป์ด๊ฒ ๊ณ  ์ž๋ฆฌ๊นŒ์ง€ ๋˜‘๊ฐ™์œผ๋ฉด if๋ฌธ์œผ๋กœ ์ฒ˜๋ฆฌํ•ด์ค€๋‹ค.

indexOf๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋Š” ์ƒ๊ฐ์กฐ์ฐจ ๋ชปํ•˜์˜€๋Š”๋ฐ ์ด๋ ‡๊ฒŒ๋„ ์‚ฌ์šฉ์ด ๋˜๊ตฌ๋ผ ๋ผ๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค..!

 

 

 

4. ์‹œ๋„ํ•œ ๊ฐ’์„ ๋˜ ์ž…๋ ฅํ–ˆ์„ ๊ฒฝ์šฐ

tries๋ผ๋Š” ๋ฐฐ์—ด์— ๋‚ด๊ฐ€ ์ ์€ ๋‹ต์„ pushํ•œ๋‹ค. input๊ฐ’์„ ์ด์ „์— ๋ฐฐ์—ด๋กœ ๋งŒ๋“ค์–ด ๋†“์•˜๋Š”๋ฐ includes๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ๋ฌธ์ž์—ด๋กœ ๋งŒ๋“ค์–ด์ค€๋‹ค.

(๋ฐฐ์—ด์€ ์•ˆ๋˜๋”๋ผ๊ตฌ์š”..? ํ˜น์‹œ ๋˜๋ฉด ๋Œ“๊ธ€๋กœ ๋ง์”€ํ•ด์ฃผ์„ธ์š”..ใ…Žใ…Ž)

tries์— ์—†๋Š” ๊ฐ’๋“ค์ด ๋“ค์–ด๊ฐ€๋ฉด tries์— ๋“ค์–ด๊ฐ€๊ณ  count๋ฅผ 1 ์ถ”๊ฐ€ํ•ด์ฃผ๊ณ  ์ด๋ฏธ ๊ธฐ์กด์ด ์žˆ๋Š” ๊ฐ’์ด tries์— ๋“ค์–ด๊ฐ€๋ฉด alert๋กœ ๊ฒฝ๊ณ  ๋ฉ”์„ธ์ง€๊ฐ€ ๋œฌ๋‹ค.

join() ์€ ๋ฐฐ์—ด์ธ ๊ฐ’์„ ์ €๋ ‡๊ฒŒ ๋ฌธ์ž์—ด๋กœ ๋ณ€๊ฒฝํ•ด์ฃผ๋Š” ์•„์ฃผ ํŽธ๋ฆฌํ•œ ๋ฉ”์„œ๋“œ์ด๋‹ค.

 

 

 

 

728x90