본문 바로가기
소프트웨어 개발/자료구조 & 알고리즘

Array 알고리즘 문제 with JavaScript

by cozyzoey 2021. 2. 28.

Array Chunk

array를 주어진 chunk 크기로 나누기

chunk([1, 2, 3, 4, 5], 2) --> [[ 1, 2], [3, 4], [5]]

# slice

function chunk(array, size) {
	let chucked = []

	for (i = 0; i <= array.length - 1; i += size) {
		chucked.push(array.slice(i, i + size))
	}

	return chucked
}

 

Spiral Matrix

N을 입력받아 NxN spiral matrix를 출력하기

matrix(3)

[[1, 2, 3],

[8, 9, 4],

[7, 6, 5]]

# 행렬 범위를 좁혀가기

function matrix(n) {
	const arr = []
	for (let i = 0; i < n; i++) {
		arr.push([])
	}

	let rowStart = 0
	let rowEnd = n - 1
	let colStart = 0
	let colEnd = n - 1
	let counter = 1

	while (rowStart <= rowEnd && colStart <= colEnd) {
		// Top row
		for (let col = colStart; col <= colEnd; col++) {
			arr[rowStart][col] = counter
			counter++
		}
		rowStart++

		// Right column
		for (let row = rowStart; row <= rowEnd; row++) {
			arr[row][colEnd] = counter
			counter++
		}
		colEnd--

		// Bottom row
		for (let col = colEnd; col >= colStart; col--) {
			arr[rowEnd][col] = counter
			counter++
		}
		rowEnd--

		// Left column
		for (let row = rowEnd; row >= rowStart; row--) {
			arr[row][colStart] = counter
			counter++
		}
		colStart++
		debugger
	}

	return arr
}

댓글