728x90
1. 배열이 있고 어떤값(weight)이 주어졌을때 합쳐서 어떤값(weight)이 되는 배열내 두개의 인덱스를 반환하라.
만약 합쳐서 weight가 되는 항목 두개가 존재하지 않을경우 -1을 return
function findSum(arr,weight){
for(let i = 0; i <arr.length;i++){
for(let k = i+1; k<arr.length;k++){
if(arr[i] + arr[k] == weight){
return[i,k];
}
}
}
return -1;
}
2. 시계방향 회전
/*
input
[1,0,1],
[0,0,1],
[1,1,1],
output
[1,1,1],
[0,0,1],
[1,0,1],
1.행렬의 세번째 열이 회전된 행렬의 행이 된다.
2. 행렬의 두번째 열이 회전된 행렬의 두번째 행이 된다.
3. 행렬의 첫번째 열이 회전된 행렬의 세번째 행이 된다.
*/
[1] slice 쓰고 코딩
function rotation(arr){
let arr1 = arr.slice();
for(let i = 0; i <arr.length;i++){
arr1[i] = arr[i].slice();
for(let k = 0; k <arr.length;k++){
arr[i][k] = arr1[k][arr.length-i-1];
}
}
return arr;
}
let arr = [[1,2,3],[4,5,6],[7,8,9]]
rotation(arr);
console.log(arr);
[2] slice 안쓰고 코딩
let arr1 = [];
for(let i = 0; i<arr.length;i++){
arr1.push([]);
for(let k = 0; k<arr.length;k++){
arr1[i][k] = arr[i][k];
}
function rotation(arr){
for(let i = 0; i <arr.length;i++){
for(let k = 0; k <arr.length;k++){
arr[i][k] = arr1[k][arr.length-i-1];
}
}
return arr;
}
let arr = [[1,2,3],[4,5,6],[7,8,9]]
rotation(arr);
console.log(arr);
[3] 새로운 접근
function rotateMatrix(mat) {
let N = mat.length;
for (let i = 0; i < N / 2; i++) {
//현재 항목을 기준으로
for (let k = i; k < N - i - 1; k++) {
//현재 칸의 값을 임시 변수에 저장
let temp = mat[i][k];
//현재 항목 기준 오른쪽값을 현재 항목 기준 위쪽칸에 할당
mat[i][k] = mat[k][N - 1 - i];
//현재 항목기준 아래쪽 값을 현재 항목 기준 오른쪽 칸에 할당
mat[k][N - 1 - i] = mat[N - 1 - i][N - 1 - k];
//현재 항목 기준 왼쪽값을 현재 항목 기준 아래쪽 칸에 할당
mat[N - 1 - i][N - 1 - k] = mat[N - 1 - k][i];
//임시변수의 값을 현재 항목 기준 왼쪽칸에 할당
mat[N - 1 - k][i] = temp;
}
}
}
728x90
'개발 > html, css, js' 카테고리의 다른 글
[JavaScript] 각종 이벤트 (0) | 2022.06.07 |
---|---|
[JavaScript, CSS] 콜백, 콜백지옥 (0) | 2022.06.03 |
[JavaScript] 버블정렬, 선택정렬 (0) | 2022.05.31 |
[JavaScript] Class (0) | 2022.05.30 |
[JavaScript] 객체란 (0) | 2022.05.30 |