Logo
Hyunsu Blog
2d_array_study

๐Ÿ“†Published :Dec 1, 2023 โ€ข

๐Ÿ“†Updated :Dec 1, 2023 โ€ข

โ˜•๏ธ3min

๋ฐฐ์—ด, 2D Array.

2D Array ๋‹ค๋ฃจ๊ธฐ

์ด ๊ธ€์€ ๊ณจ๋“ ๋ž˜๋น— ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ ํ•ฉ๊ฒฉ์ž ๋˜๊ธฐ ํŒŒ์ด์ฌ ํŽธ์˜ 5์žฅ ์จ๋จธ๋ฆฌ์ž…๋‹ˆ๋‹ค.

  • 2์ฐจ์› ๋ฐฐ์—ด์€ 1์ฐจ์› ๋ฐฐ์—ด์„ ํ™•์žฅํ•œ ๊ฒƒ์ด๋‹ค. 1์ฐจ์› ๋ฐฐ์—ด์„ ํ™•์žฅํ–ˆ๋‹ค๋Š” ๊ฒƒ์€ 2์ฐจ์› ๋ฐฐ์—ด๋„ 1์ฐจ์›๊ณต๊ฐ„์— ์ €์žฅํ•˜๊ณ  ๋ฉ”๋ชจ๋ฆฌ์— ์—ฐ์†์ ์œผ๋กœ ํ• ๋‹นํ–ˆ๋‹ค๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค.
  • ์ฆ‰ ์ฐจ์›๊ณผ๋Š” ๋ฌด๊ด€ํ•˜๊ฒŒ ์—ฐ์†์ ์œผ๋กœ ํ• ๋‹น๋œ๋‹ค.
  • ๋ฐฐ์—ด์„ ๋‹ค๋ฃฐ ๋• ํ• ๋‹นํ•  ์ˆ˜ ์žˆ๋Š” ๋ฉ”๋ชจ๋ฆฌ์˜ ํฌ๊ธฐ๋ฅผ ํ™•์ธํ•˜๋Š”๊ฒŒ ์ข‹์€๋ฐ, 2์ฐจ์› ๋ฐฐ์—ด์˜ ๊ฒฝ์šฐ 3000*3000 ํฌ๊ธฐ๋ฅผ ์ตœ๋Œ€๋กœ ์ƒ๊ฐํ•œ๋‹ค. (์šด์˜์ฒด์ œ์— ๋”ฐ๋ผ ๋‹ค๋ฅด๊ธฐ๋„ํ•˜๋‹ค.) (1์ฐจ์›์€ ์ตœ๋Œ€ 1000๋งŒ๊ฐœ)
  • ์ฐจ์›์— ์ƒ๊ด€์—†์ด ๋ฐฐ์—ด์—์„œ ๋ฐ์ดํ„ฐ ์‚ฝ์ž…์ด ๋ฐฐ์—ด์˜ ๋งˆ์ง€๋ง‰์ด ์•„๋‹Œ ์ค‘๊ฐ„์— ์‚ฝ์ž…ํ•ด์•ผ ํ•œ๋‹ค๋ฉด, ์‚ฝ์ž…ํ•œ ์ธ๋ฑ์Šค ๋ถ€ํ„ฐ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์ธ๋ฑ์Šค๋“ค์„ ํ•œ์นธ์”ฉ ๋’ค๋กœ ๋ฐ€๋ ค์ค˜์•ผ ํ•˜๋ฏ€๋กœ ์‹œ๊ฐ„๋ณต์žก๋„์—์„œ ์‹œ๊ฐ„์ดˆ๊ณผ๋ฅผ ๊ณ ๋ คํ•˜๋Š”๊ฒŒ ์ข‹๋‹ค.

2D array ๋ฌธ์ œ ๋‹ค๋ค„๋ณด๊ธฐ

1. ํ–‰๋ ฌ์˜ ๊ณฑ์…ˆ

์ถœ์ฒ˜ : https://school.programmers.co.kr/learn/courses/30/lessons/12949

๋ฌธ์ œ ์„ค๋ช…

2์ฐจ์› ํ–‰๋ ฌ arr1๊ณผ arr2๋ฅผ ์ž…๋ ฅ๋ฐ›์•„, arr1์— arr2๋ฅผ ๊ณฑํ•œ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜, solution์„ ์™„์„ฑํ•ด์ฃผ์„ธ์š”.

์ œํ•œ ์กฐ๊ฑด

  • ํ–‰๋ ฌ arr1, arr2์˜ ํ–‰๊ณผ ์—ด์˜ ๊ธธ์ด๋Š” 2 ์ด์ƒ 100 ์ดํ•˜์ž…๋‹ˆ๋‹ค.
  • ํ–‰๋ ฌ arr1, arr2์˜ ์›์†Œ๋Š” -10 ์ด์ƒ 20 ์ดํ•˜์ธ ์ž์—ฐ์ˆ˜์ž…๋‹ˆ๋‹ค.
  • ๊ณฑํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฐ์—ด๋งŒ ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ

arr1arr2return
[[1, 4], [3, 2], [4, 1]][[3, 3], [3, 3]][[15, 15], [15, 15], [15, 15]]
[[2, 3, 2], [4, 2, 4], [3, 1, 4]][[5, 4, 3], [2, 4, 1], [3, 1, 1]][[22, 22, 11], [36, 28,18], [29, 20, 14]]

๋ฌธ์ œ ํ’€์ด

  • ์ด ๋ฌธ์ œ์˜ ํ•ต์‹ฌ์€ ํ–‰๋ ฌ์˜ ๊ณฑ์…ˆ ๊ณต์‹์„ ์•Œ์•„์•ผ ํ•œ๋‹ค.
2d array 1
  • ๋‘ํ–‰๋ ฌ์„ ๊ณฑํ•˜๋ ค๋ฉด ์ด๋Ÿฐ ๊ทœ์น™์„ ๋”ฐ๋ผ์•ผ ํ•œ๋‹ค.
    1. ํ–‰๋ ฌ A์˜ ํ–‰๊ณผ ํ–‰๋ ฌ B์˜ ์—ด์˜ ๊ธธ์ด๋Š” ๊ฐ™์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    2. ๊ฒฐ๊ณผ ํ–‰๋ ฌ์˜ ํฌ๊ธฐ๋Š” ํ–‰๋ ฌ A์˜ ํ–‰์˜ ์ˆ˜์™€ ํ–‰๋ ฌ B์˜ ์—ด์˜ ์ˆ˜๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

๋ฐฉ๋ฒ•1. ๋‚ด๊ฐ€ ํ‘ผ ๋ฐฉ๋ฒ• :

- ํ•˜๋‚˜์˜ row๋ฅผ ๊ฐ€์กŒ๋‹ค๋ฉด, ๋‚ด๋ถ€ for๋ฌธ์„ ์ด์šฉํ•ด ๋‹ค๋ฅธ 2์ฐจ์› ๋ฐฐ์—ด์˜ column์„ ์•„์˜ˆ ๊ฐ€์ ธ์™€ ์„œ๋กœ ๊ณ„์‚ฐํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. 2d array 2 function solution(arr1, arr2) { // arr1์˜ row, arr2์˜ col ๊ธธ์ด๋กœ answer ๋ฐฐ์—ด ๋งŒ๋“ค๊ธฐ let answer = Array.from({ length: arr1.length }, () => Array(arr2[0].length).fill(0) ); // arr1์˜ row, arr2์˜ col ๊ธธ์ด๋งŒํผ ๋ฐ˜๋ณต๋ฌธ ๋Œ๋ฆฌ๊ธฐ for (let row = 0; row < arr1.length; row++) { for (let col = 0; col < arr2[0].length; col++) { let rowArr = arr1[row]; let colArr = getCols(arr2, col); //col ์ด ์ผ์น˜ํ•˜๋Š” arr2์˜ ์—ด์„ ๊ฐ€์ ธ์˜ด. answer[row][col] = calculate(rowArr, colArr); } } return answer; } function calculate(row, col) { let sum = 0; for (let i = 0; i < row.length; i++) { sum += row[i] * col[i]; } return sum; } function getCols(arr, col) { let result = []; for (let i = 0; i < arr.length; i++) { for (let j = 0; j < arr[0].length; j++) { if (j === col) { result.push(arr[i][j]); } } } return result; }

์‹œ๊ฐ„๋ณต์žก๋„ ๋ถ„์„ :

  1. answer ๋ฐฐ์—ด ์ƒ์„ฑ:
  • answer ๋ฐฐ์—ด์€ n x m ํฌ๊ธฐ์˜ 2์ฐจ์› ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•˜๋ฏ€๋กœ ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” O(nm) ์ด๋‹ค.
  1. ์ด์ค‘ ๋ฐ˜๋ณต๋ฌธ: for (let row = 0; row < arr1.length; row++)์™€ for (let col = 0; col < arr2[0].length; col++) ์ด์ค‘ ๋ฐ˜๋ณต๋ฌธ์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ ์›์†Œ๋ฅผ ๊ณ„์‚ฐ.
    • arr1 ์˜ ํ–‰์˜ ์ˆ˜๋ฅผ n ์ด๋ผ๊ณ  ํ•˜๊ณ , arr2 ์˜ ์—ด์˜ ์ˆ˜๋ฅผ m ์ด๋ผ๊ณ  ํ•  ๋•Œ, ์ด์ค‘ ๋ฐ˜๋ณต๋ฌธ์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” O(nm).
  2. getCols ํ•จ์ˆ˜: getCols ํ•จ์ˆ˜๋Š” arr2์—์„œ ํŠน์ • column์˜ ๊ฐ’์„ ๊ฐ€์ ธ์˜ค๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ. arr2์˜ ํ–‰์˜ ์ˆ˜๋ฅผ n์ด๋ผ๊ณ  ํ•˜๊ณ , arr2์˜ ์—ด์˜ ์ˆ˜๋ฅผ m์ด๋ผ๊ณ  ํ•  ๋•Œ, getCols ํ•จ์ˆ˜์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” O(nm).
  3. calculate ํ•จ์ˆ˜: calculate ํ•จ์ˆ˜๋Š” row, col ์ด ๋งŒ๋‚ฌ์„ ๋•Œ ๊ณ„์‚ฐ์„ ํ•œ๋‹ค. O(n) ์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ๊ฐ€์ง„๋‹ค.

์ด ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” O(nmk)

๋ฐฉ๋ฒ•2.

row1 ๊ณผ ๊ณ„์‚ฐ๋  col1์„ ๊ฐ€์ ธ์˜ค๋Š”๊ฒŒ ์•„๋‹Œ, for๋ฌธ ๋‚ด์—์„œ ๋ฐ”๋กœ O(n)๊ณ„์‚ฐ. ์œ„์™€ ๋ฌธ์ œ ํ•ด๊ฒฐ ์ ‘๊ทผ์€ ๊ฐ™์ง€๋งŒ, ์ฝ”๋“œ ํ‘œํ˜„๋งŒ ๋‹ค๋ฅด๋‹ค. ์—ฌ๊ธฐ์„œ์˜ k ๋Š” ํ–‰๊ณผ ์—ด์ด ๋งŒ๋‚˜ ๊ฐ์ž ๋Œ€์‘ํ•˜์—ฌ ๊ณ„์‚ฐํ•˜๊ฒŒ ๋  ํšŸ์ˆ˜๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค. ์‹œ๊ฐ„๋ณต์žก๋„๋Š” 3์ค‘ for๋ฌธ์œผ๋กœ ์ด ๋ฐฉ๋ฒ•๋„ ์ฒซ๋ฒˆ์งธ ๋ฐฉ๋ฒ•๊ณผ ๋™์ผํ•˜๊ฒŒ O(n*m*k) ์‹œ๊ฐ„๋ณต์žก๋„์ด๋‹ค. ์ด๋ฅผ ์ข€ ๋” ์ •ํ™•ํ•˜๊ฒŒ ๋ณด์ž๋ฉด, ์‚ฌ์‹ค k๋Š” row ๊ธธ์ด col๊ธธ์ด์™€๋„ ๋™๋“ฑํ•˜๋‹ค๊ณ  ๋ณผ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ O(k^3) ์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ๊ฐ€์ง„๋‹ค. (=๋ฐฉ๋ฒ•1๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ด๋‹ค)

function solution(arr1, arr2){ let rows=arr1.length; let cols = arr2[0].length; let result = Array.from({length: rows},()=> Array.from({length: cols},()=> 0)) for(let row=0; row<rows; row++){ for(let col=0; col<cols; col++){ for(let k=0; k<rows[0].length; k++ ){ result[row][col] += arr1[row][k] * arr[k][col] } } } return result; }

2. ๋ฐฉ๋ฌธ๊ธธ์ด

์ถœ์ฒ˜ : https://school.programmers.co.kr/learn/courses/30/lessons/49994

4๊ฐ€์ง€ ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ์›€์ง์ด๋ ค ํ•ฉ๋‹ˆ๋‹ค. ๋ช…๋ น์–ด๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • U: ์œ„์ชฝ์œผ๋กœ ํ•œ ์นธ ๊ฐ€๊ธฐ
  • D: ์•„๋ž˜์ชฝ์œผ๋กœ ํ•œ ์นธ ๊ฐ€๊ธฐ
  • R: ์˜ค๋ฅธ์ชฝ์œผ๋กœ ํ•œ ์นธ ๊ฐ€๊ธฐ
  • L: ์™ผ์ชฝ์œผ๋กœ ํ•œ ์นธ ๊ฐ€๊ธฐ

์บ๋ฆญํ„ฐ๋Š” ์ขŒํ‘œํ‰๋ฉด์˜ (0, 0) ์œ„์น˜์—์„œ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. ์ขŒํ‘œํ‰๋ฉด์˜ ๊ฒฝ๊ณ„๋Š” ์™ผ์ชฝ ์œ„(-5, 5), ์™ผ์ชฝ ์•„๋ž˜(-5, -5), ์˜ค๋ฅธ์ชฝ ์œ„(5, 5), ์˜ค๋ฅธ์ชฝ ์•„๋ž˜(5, -5)๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.

์บ๋ฆญํ„ฐ๊ฐ€ ์ฒ˜์Œ ๊ฑธ์–ด๋ณธ ๊ธธ์˜ ๊ธธ์ด๋ฅผ ๊ตฌํ•ด์•ผ ํ•œ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ

dirsanswer
"ULURRDLLU"7
"LULLLLLLU"7

์ด ๋ฌธ์ œ๋Š” ๋‘๊ฐ€์ง€ ํ•ต์‹ฌํฌ์ธํŠธ๊ฐ€์žˆ๋‹ค.

  • ์ค‘๋ณต ๊ฒฝ๋กœ ์ฒ˜๋ฆฌ ๋ฐฉ๋ฒ•
  • ์ขŒํ‘œ์˜ ๊ฒฝ๊ณ„๊ฐ€ -5 ๋ถ€ํ„ฐ 5๊นŒ์ง€์˜ ๊ฒฝ๊ณ„๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค.

๋จผ์ € ์ค‘๋ณต ๊ฒฝ๋กœ ์ฒ˜๋ฆฌ ๋ฐฉ๋ฒ•์„ ๋ณด์ž๋ฉด, ์ค‘๋ณต ๊ฒฝ๋กœ๋Š” ๋‘๊ฐ€์ง€ ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค.

  1. aโ†’b, bโ†’a ์˜ ๊ฒฝ๋กœ์ธ๊ฒฝ์šฐ ์ค‘๋ณต์œผ๋กœ ๊ฐ„์ฃผํ•˜๊ณ , ์ฒ˜์Œ ๋ฐฉ๋ฌธํ•œ ๊ธธ์ด์— ํฌํ•จํ•˜์ง€ ์•Š๋Š”๋‹ค.
  2. aโ†’b, aโ†’b ๋˜‘๊ฐ™์€ ์ถœ๋ฐœ์ ๊ณผ ๋„์ฐฉ์ ์„ ๋‘๋ฒˆ ์ด์ƒ ๋ฐฉ๋ฌธํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” ๋‹น์—ฐํžˆ ์ค‘๋ณต์ด๋ฏ€๋กœ ์ฒ˜์Œ ๋ฐฉ๋ฌธํ•œ ๊ธธ์ด์— ํฌํ•จํ•˜์ง€ ์•Š๋Š”๋‹ค.
2d array 3
  • ์ค‘๋ณต ๊ฒฝ๋กœ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์ข‹์€ ์ž๋ฃŒ๊ตฌ์กฐ๋Š” Set ์ด๋‹ค.

  • ์œ„ 1 ๋ฒˆ์˜ ๊ฒฝ์šฐ, ์ฒ˜์Œ ๋ฐฉ๋ฌธํ–ˆ์„ ๋•Œ ์ถœ๋ฐœ์ขŒํ‘œ->๋„์ฐฉ์ขŒํ‘œ, ๋„์ฐฉ์ขŒํ‘œ->์ถœ๋ฐœ์ขŒํ‘œ๋กœ ๋‘๊ฐ€์ง€ ๊ฒฝ์šฐ๋ฅผ ๋ชจ๋‘ set์— ๋„ฃ๋Š”๋‹ค. ๊ทธ ์ด์œ ๋Š” ๋‹ค์Œ์— ๋ฐ˜๋Œ€๋ฐฉํ–ฅ์˜ ๊ฒฝ๋กœ๊ฐ€ ์žˆ๋‹ค๋ฉด ์ด๋ฏธ set์— ์žˆ๊ธฐ๋•Œ๋ฌธ์— ์ค‘๋ณต์œผ๋กœ ๊ฐ„์ฃผํ•˜๊ณ  ์ฒ˜์Œ ๊ฑธ์–ด ๋ณธ ๊ธธ์ด์— ํฌํ•จํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

  • ์œ„ 2 ๋ฒˆ์˜ ๊ฒฝ์šฐ, set ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์• ์ดˆ์— ์ค‘๋ณต๋œ ๊ฒƒ์„ ํฌํ•จํ•˜์ง€ ์•Š๊ณ  ๋ฐฐ์ œํ•œ๋‹ค.

  • ์ขŒํ‘œ์˜ ๊ฒฝ๊ณ„์ฒ˜๋ฆฌ

    • ์ฃผ์–ด์ง„ ๊ทธ๋ฆผ์ƒ์œผ๋กœ๋Š” (0,0)์—์„œ ์‹œ์ž‘ํ•˜์—ฌ -5์™€ 5์‚ฌ์ด์˜ ์ •์‚ฌ๊ฐํ˜• ๋ฒ”์œ„์—์„œ ์›€์ง์ธ๋‹ค.
    • ๋‚˜๊ฐ™์€ ๊ฒฝ์šฐ๋Š” ํ•ญ์ƒ ์™ผ์ชฝ์ƒ๋‹จ ๋์„ (0,0)์œผ๋กœ ์‹œ์ž‘ํ•˜๋Š” ๊ฒƒ์— ์ต์ˆ™ํ•˜์—ฌ ์‹œ์ž‘์ขŒํ‘œ๋ฅผ ์• ์ดˆ์— (5,5) ๋กœ ๋‘”๋‹ค.
    • ๋ฒ”์œ„๋Š” (0,10)์œผ๋กœ ๋‘”๋‹ค. (๊ฐœ์ธ์ ์ธ ์ƒ๊ฐ์œผ๋กœ๋Š” x,y์ขŒํ‘œ๋ฅผ ์–‘์ˆ˜๋กœ ๋‘๋Š”๊ฒŒ ๋ฌธ์ œ ํ’€ ๋•Œ ์‹ค์ˆ˜์˜ ์œ„ํ—˜์„ ์ค„์—ฌ์ค€๋‹ค.)

์ „์ฒด์ ์ธ ๋ฌธ์ œ ์ ‘๊ทผ๋ฒ•

1. (5,5) ์—์„œ ์ฃผ์–ด์ง„ ๋ช…๋ น๋ฌธ์„ ํ†ตํ•ด ๋ฐฉํ–ฅ์„ ์„ค์ •ํ•˜๊ณ  1์นธ ์›€์ง์ธ๋‹ค.
2. ์ด๋™ํ•œ ๋‹ค์Œ ์ขŒํ‘œ๊ฐ€ ์ฃผ์–ด์ง„ ์ขŒํ‘œํ‰๋ฉด์˜ ๋ฒ”์œ„์— ์œ ํšจํ•œ์ง€ ๊ฒ€์‚ฌํ•œ๋‹ค.
2-1. ๋งŒ์•ฝ ์œ ํšจํ•˜์ง€ ์•Š๋‹ค๋ฉด, ์›€์ง์ผ ํ•„์š”๊ฐ€ ์—†๋‹ค.
2-2. ๋งŒ์•ฝ ์œ ํšจํ•˜๋‹ค๋ฉด, ๋ฐฉ๋ฌธ์ฒ˜๋ฆฌ๋ฅผ ํ•œ๋‹ค
3. ๋ฐฉ๋ฌธ์ฒ˜๋ฆฌ๋ฅผ ํ•˜๊ธฐ ์ „, ํ˜„์žฌ ๋ฐฉ๋ฌธํ•œ ๊ณณ์ด ์ด๋ฏธ ๋ฐฉ๋ฌธํ–ˆ๋˜ ๊ฒฝ๋กœ์ธ์ง€ ๋จผ์ € ํ™•์ธํ•œ๋‹ค.
3-1. set์˜ ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ํ†ตํ•ด O(1)์˜ ๋ณต์žก๋„๋กœ ๋ฐฉ๋ฌธ์ฒ˜๋ฆฌ์— ๋น„์šฉ์„ ๋งŽ์ด ๋“ค์ด์ง€ ์•Š๊ณ  ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋ฏธ set์— ์žˆ๋‹ค๋ฉด, ๋”์ด์ƒ ๋ฐฉ๋ฌธ์ฒ˜๋ฆฌํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค.
3-2. ๋งŒ์•ฝ ์ฒ˜์Œ ๋ฐฉ๋ฌธํ•œ ๊ณณ์ด๋ผ๋ฉด(set์— ์—†๋Š” ๊ฒฝ์šฐ), (์ถœ๋ฐœ ์ขŒํ‘œ,๋„์ฐฉ์ขŒํ‘œ )(๋„์ฐฉ์ขŒํ‘œ,์ถœ๋ฐœ์ขŒํ‘œ)๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค.
3.3 ์ฒ˜์Œ ๊ฐ€๋ณธ ๊ธธ์ด์— +1์ถ”๊ฐ€ํ•œ๋‹ค.
4. ๋งˆ์ง€๋ง‰ ๋ฐฉํ–ฅ ์ง€์‹œ๋ฌธ์„ ๋๋‚ด๊ณ  ๋‚˜์„œ, ์ด ๋ฐฉ๋ฌธ ํ•œ ๊ธธ์ด๋ฅผ ๋ฆฌํ„ดํ•œ๋‹ค. ๋˜๋Š” set ์—์„œ ์ด๋ฏธ ํ•œ๊ฒฝ๋กœ์— ๋‘๊ฐ€์ง€์˜ ๊ฒฝ์šฐ๋ฅผ ๋‹ค ๋‹ด๊ณ  ์žˆ์œผ๋‹ˆ, set์˜ ์‚ฌ์ด์ฆˆ์—์„œ/2ํ•œ ๊ฐ’์„ ๋ฆฌํ„ดํ•˜๋Š” ๋ฐฉ๋ฒ•๋„ ์žˆ๋‹ค.

function solution(dirs){ let current = [5, 5]; let count =0; for (const dir of dirs) { const index = direction[dir]; const nx = current[0] + dx[index]; const ny = current[1] + dy[index]; if (nx < 0 || ny < 0 || nx > 10 || ny > 10) continue; //check if visited const visitedX = nx; const visitedY = ny; if (!visited[visitedX][visitedY]) { visited[visitedX][visitedY] = `${current[0]}${current[1]}`; visited[current[0]][current[1]] = `${visitedX}${visitedY}`; count += 1; current = [nx, ny]; continue; } if ( visited[visitedX][visitedY].indexOf(`${current[0]}${current[1]}`) !== -1 || visited[current[0]][current[1]].indexOf(`${visitedX}${visitedY}`) !== -1 ){ current = [nx, ny]; continue; } current = [nx, ny]; count += 1; } return count; }

์ด ๋ฌธ์ œ์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋Š” ์ฃผ์–ด์ง„ ๋ฐฉํ–ฅ ๋ช…๋ น๋ฌธ์˜ ๊ธธ์ด ๋งŒํผ๋งŒ ์ˆœํšŒํ•˜๋ฏ€๋กœ O(dirs.length) ๊ฐ€ ๋œ๋‹ค.

์ด๋ฒˆ ์ฃผ ํšŒ๊ณ 

  • 2D array๋Š” ํ”„๋ก ํŠธ์—์„œ ๊ตฌํ˜„์œผ๋กœ ์ƒ๋‹นํžˆ ๋งŽ์ด ์“ฐ์ด๋Š”๋ฐ ์ƒ๊ฐ๋ณด๋‹ค ์‰ฝ๊ฒŒ ํ’€์ง„ ๋ชปํ•˜๋Š” ๊ฒƒ ๊ฐ™๋‹ค.(์ข€ ๋” ์—ฐ์Šตํ•„์š”)
  • ์ฑ…์˜ ๋ฌธ์ œ ์™ธ์—๋„ ์Šคํ„ฐ๋””์—์„  leetcode ๋ฌธ์ œ๋“ค๋„ ์ถ”๊ฐ€์ ์œผ๋กœ ํ‘ธ๋Š”๋ฐ ์ƒ๊ฐ๋ณด๋‹ค ๋ฐฐ์—ด์˜ ๋ฌธ์ œ์—์„œ ๊ณต๊ฐ„๋ณต์žก๋„๋ฅผ ์ตœ์ ํ™”ํ•˜๋Š” ๋ฌธ์ œ๋“ค์ด ํฅ๋ฏธ๋กœ์› ๋‹ค.

Hi, I'm Hyunsu ๐Ÿ‘‹

Profile Image

์•ˆ๋…•ํ•˜์„ธ์š”. ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž ์ฃผํ˜„์ˆ˜์ž…๋‹ˆ๋‹ค.

๊ฐœ๋ฐœ์„ ํ†ตํ•ด ์‚ฌ์šฉ์ž๋“ค์—๊ฒŒ ํ’๋ถ€ํ•˜๊ณ  ๊ฐ€์น˜ ์žˆ๋Š” ๊ฒฝํ—˜์„ ์ œ๊ณตํ•˜๋Š” ์ผ์— ๋ฟŒ๋“ฏํ•จ์„ ๋Š๋‚๋‹ˆ๋‹ค.

์˜ต์‹œ๋””์–ธ(Obsidian)์—์„œ ํ˜„์žฌ ๋ธ”๋กœ๊ทธ๋กœ ํ•˜๋‚˜์”ฉ ๊ธ€์„ ์˜ฎ๊ธฐ๋Š” ๊ณผ์ •์— ์žˆ์–ด์š”. โ˜•๏ธ ๐Ÿ‘ฉโ€๐Ÿ’ป โ›ท

Github on ViewReach Me Out