๐Ÿ‘ฉ‍๐Ÿ’ป/JavaScript

[Programmers] JavaScript ํฌ๋ ˆ์ธ ์ธํ˜• ๋ฝ‘๊ธฐ ๊ฒŒ์ž„

ํ•œ๋‚˜ 2021. 2. 18. 23:55

๋ฌธ์ œ

  • ๊ฒŒ์ž„ ํ™”๋ฉด์€ 1 x 1 ํฌ๊ธฐ์˜ ์นธ๋“ค๋กœ ์ด๋ฃจ์–ด์ง„ N x N ํฌ๊ธฐ์˜ ์ •์‚ฌ๊ฐ ๊ฒฉ์ž

  • ์œ„์ชฝ์—๋Š” ํฌ๋ ˆ์ธ์ด ์žˆ๊ณ  ์˜ค๋ฅธ์ชฝ์—๋Š” ๋ฐ”๊ตฌ๋‹ˆ๊ฐ€ ์กด์žฌํ•œ๋‹ค.

  • ๋ชจ๋“  ์ธํ˜•์€ 1 x 1 ํฌ๊ธฐ์˜ ๊ฒฉ์ž ํ•œ ์นธ์„ ์ฐจ์ง€ํ•œ๋‹ค.

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

์ œํ•œ ์‚ฌํ•ญ

  • board ๋ฐฐ์—ด์€ 2์ฐจ์› ๋ฐฐ์—ด๋กœ ํฌ๊ธฐ๋Š” 5 x 5 ์ด์ƒ 30 x 30 ์ดํ•˜์ž…๋‹ˆ๋‹ค.
  • board์˜ ๊ฐ ์นธ์—๋Š” 0 ์ด์ƒ 100 ์ดํ•˜์ธ ์ •์ˆ˜๊ฐ€ ๋‹ด๊ฒจ์žˆ์Šต๋‹ˆ๋‹ค.
    • 0์€ ๋นˆ ์นธ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.
    • 1 ~ 100์˜ ๊ฐ ์ˆซ์ž๋Š” ๊ฐ๊ธฐ ๋‹ค๋ฅธ ์ธํ˜•์˜ ๋ชจ์–‘์„ ์˜๋ฏธํ•˜๋ฉฐ ๊ฐ™์€ ์ˆซ์ž๋Š” ๊ฐ™์€ ๋ชจ์–‘์˜ ์ธํ˜•์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.
  • moves ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๋Š” 1 ์ด์ƒ 1,000 ์ดํ•˜์ž…๋‹ˆ๋‹ค.
  • moves ๋ฐฐ์—ด ๊ฐ ์›์†Œ๋“ค์˜ ๊ฐ’์€ 1 ์ด์ƒ์ด๋ฉฐ board ๋ฐฐ์—ด์˜ ๊ฐ€๋กœ ํฌ๊ธฐ ์ดํ•˜์ธ ์ž์—ฐ์ˆ˜์ž…๋‹ˆ๋‹ค.

์ฝ”๋“œ

 

ํ’€์ด

2021/01/28 - [๐Ÿ‘ฉ‍๐Ÿ’ป/JavaScript] - [Programmers] JavaScript ํ–‰๋ ฌ์˜ ๋ง์…ˆ, ํ‚คํŒจ๋“œ ๋ˆ„๋ฅด๊ธฐ ๋ฌธ์ œ

 

[Programmers] JavaScript ํ–‰๋ ฌ์˜ ๋ง์…ˆ, ํ‚คํŒจ๋“œ ๋ˆ„๋ฅด๊ธฐ ๋ฌธ์ œ

๋ฌธ์ œ ํ–‰๋ ฌ์˜ ๋ง์…ˆ์€ ํ–‰๊ณผ ์—ด์˜ ํฌ๊ธฐ๊ฐ€ ๊ฐ™์€ ๋‘ ํ–‰๋ ฌ์˜ ๊ฐ™์€ ํ–‰, ๊ฐ™์€ ์—ด์˜ ๊ฐ’์„ ์„œ๋กœ ๋”ํ•œ ๊ฒฐ๊ณผ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. 2๊ฐœ์˜ ํ–‰๋ ฌ arr1๊ณผ arr2๋ฅผ ์ž…๋ ฅ๋ฐ›์•„, ํ–‰๋ ฌ ๋ง์…ˆ์˜ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜, solution์„ ์™„์„ฑํ•ด

uiyoji-journal.tistory.com

์ง€๋‚œ ๋ฒˆ ํ‚คํŒจ๋“œ ๋ˆ„๋ฅด๊ธฐ ๋ฌธ์ œ์ฒ˜๋Ÿผ x์™€ y ์ขŒํ‘œ๋ฅผ ๊ณ ๋ คํ•˜๋ฉฐ ํ’€์—ˆ๋‹ค. ์ ์ ˆํžˆ for ๋ฌธ์—๋Š” break๋ฅผ, if ๋ฌธ์—๋Š” continue๋ฅผ ์“ฐ๋ฉฐ ๋ถˆํ•„์š”ํ•œ ์—ฐ์‚ฐ์„ ์ค„์ด๊ณ ์ž ํ–ˆ๋‹ค.

 

 

2์ฐจ์› ๋ฐฐ์—ด board์™€ ์ธํ˜•์„ ์ฐพ๊ณ ์ž ํ•˜๋Š” ์œ„์น˜๊ฐ€ ๋”ค๊ธด ๋ฐฐ์—ด moves๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๋ฐ˜ํ™˜ํ•ด์•ผ ํ•  ๊ฒƒ์€ ๊ฒน์ณ์„œ ์‚ฌ๋ผ์ง€๋Š” ์ธํ˜•์˜ ์ˆ˜์ด๋ฏ€๋กœ cnt์™€ ์‚ฌ์šฉ์ž๊ฐ€ ์ธํ˜•์„ ๋‹ด๋Š” bucket์„ ์ดˆ๊ธฐํ™”ํ•ด์„œ ๋ฏธ๋ฆฌ ์„ ์–ธํ•œ๋‹ค.

 

moves ๋ฐฐ์—ด์—์„œ๋Š” index๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ๊ฐ’๋งŒ์„ ์ถ”์ถœํ•  ์ˆ˜ ์žˆ๊ฒŒ for of ๋ฐ˜๋ณต๋ฌธ์„ ์ผ๋‹ค. 2์ฐจ์› ํ–‰๋ ฌ์—์„œ 1, 2, 3.. ๋ฒˆํ˜ธ๊ฐ€ ๋ถ™๋Š” ๊ฒƒ์€ x ์ขŒํ‘œ์ด๋ฏ€๋กœ, moves์˜ ๊ฐ ์›์†Œ์—์„œ 1์„ ๋บ€ ํ›„ ํ•ด๋‹น ๊ฐ’์„ ๋ณ€์ˆ˜ x์— ๋‹ด๋Š”๋‹ค.

ํฌ๋ ˆ์ธ์€ ํ–‰๋ ฌ์˜ ๊ฐ€์žฅ ์œ„ y ์ขŒํ‘œ๋ถ€ํ„ฐ ํƒ์ƒ‰ํ•ด ๋‚ด๋ ค๊ฐ€๋Š”๋ฐ, ์ด๋ฏธ ์ฃผ์–ด์ง„ x ์ขŒํ‘œ๊ฐ’๊ณผ y ์ขŒํ‘œ๊ฐ’์ด ๋งŒ๋‚˜๋Š” ์ง€์ ์ด 0์ผ ๊ฒฝ์šฐ continue๋ฅผ ์จ์„œ if๋ฌธ์„ ๋น ์ ธ๋‚˜์˜จ๋‹ค.

๋งŒ์ผ ํ•ด๋‹น ์ขŒํ‘œ์— ์ฃผ์–ด์ง„ ๊ฐ’์ด 0์ด ์•„๋‹Œ ๊ฐ ์ธํ˜•์˜ ๊ณ ์œ ํ•œ ๋ฒˆํ˜ธ์ผ ๊ฒฝ์šฐ ๋ฐฐ์—ด bucket์— push๋กœ ์›์†Œ๋ฅผ ์ถ”๊ฐ€ํ•ด์ค€๋‹ค. ์ด๋•Œ board์˜ ํ•ด๋‹น ์ขŒํ‘œ๋ฅผ 0์œผ๋กœ ๋งŒ๋“ค์–ด์ค˜์•ผํ•œ๋‹ค. bucket์— ์ธํ˜•์„ ๋‹ด๋Š” ๊ฒƒ์€ moves์˜ ๊ฐ ์›์†Œ ๋‹น ํ•œ ๋ฒˆ์ด๋ฏ€๋กœ, board์˜ ํ•ด๋‹น ์ขŒํ‘œ๋ฅผ 0์œผ๋กœ ๋งŒ๋“ค์–ด์ค€ ๋‹ค์Œ์—๋Š” break๋ฅผ ์จ์„œ for๋ฌธ์„ ๋น ์ ธ๋‚˜์˜จ๋‹ค.

 

bucket์˜ ๊ธธ์ด๊ฐ€ ์ตœ์†Œํ•œ 2 ์ด์ƒ์ด ๋˜์–ด์•ผ ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰ ๊ฐ’๊ณผ ๋งˆ์ง€๋ง‰์—์„œ ๋‘ ๋ฒˆ์งธ์ธ ๊ฐ’์„ ๋น„๊ตํ•ด ์„œ๋กœ ์—ฐ์†๋œ ์ธํ˜•์ด ๋™์ผํ•œ์ง€ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

splice ํ•จ์ˆ˜๋Š” ๋‘ ๋ฒˆ์งธ ์ธ์ž๋ฅผ ์ƒ๋žตํ•  ๊ฒฝ์šฐ ๋ฐฐ์—ด์˜ ๋์„ ์˜๋ฏธํ•˜๋ฏ€๋กœ, ์ฒซ ๋ฒˆ์งธ ์ธ์ž๋ฅผ ํฌํ•จํ•ด ๋๊นŒ์ง€ ์›์†Œ๋ฅผ ์‚ญ์ œํ•œ๋‹ค๋Š” ์˜๋ฏธ์ด๋‹ค. ์œ„ ์ฝ”๋“œ์—์„œ๋Š” bucket.splice(bucket.length - 2)๋ผ๊ณ  ์จ์คฌ์ง€๋งŒ, bucket.splice(-2)๋ผ๊ณ ๋งŒ ์จ๋„ ๋œ๋‹ค.

let numbers = [1, 2, 3, 4]
numbers.splice(-2) // ์‚ญ์ œ๋œ [3, 4]
console.log(numbers) // [ 1, 2 ]

splice๋Š” ์›๋ณธ ๋ฐฐ์—ด์— ์˜ํ–ฅ์„ ์ค€๋‹ค.

 

cnt๋Š” ์‚ญ์ œ๊ฐ€ ์ผ์–ด๋‚  ๋•Œ๋งˆ๋‹ค 1์”ฉ ์ฆ๊ฐ€ํ•˜๋„๋ก ํ–ˆ์œผ๋ฏ€๋กœ return ์‹œ์—๋Š” ์ธํ˜•์˜ ๊ฐœ์ˆ˜๋ฅผ ๊ตฌํ•ด์•ผ ํ•˜๋ฏ€๋กœ cnt์— 2๋ฅผ ๊ณฑํ•ด์ค€๋‹ค.