[JavaScript] 배열 관련 문제 2개

2022. 5. 31. 15:27·개발/html, css, js
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
'개발/html, css, js' 카테고리의 다른 글
  • [JavaScript] 각종 이벤트
  • [JavaScript, CSS] 콜백, 콜백지옥
  • [JavaScript] 버블정렬, 선택정렬
  • [JavaScript] Class
TeTedo.
TeTedo.
  • TeTedo.
    TeTedo 개발 일기
    TeTedo.
  • 전체
    오늘
    어제
    • 분류 전체보기 (319)
      • 개발 (274)
        • Article (4)
        • 정리 (21)
        • Spring Boot (17)
        • JPA (2)
        • JAVA (6)
        • Database (4)
        • 자료구조 (11)
        • 알고리즘 (32)
        • React (20)
        • Docker (10)
        • node.js (18)
        • Devops (11)
        • Linux (4)
        • TypeScript (3)
        • Go (10)
        • HyperLedger (4)
        • BlockChain (43)
        • html, css, js (48)
        • CS (3)
        • AWS (3)
      • 모아두고 나중에 쓰기 (3)
      • 팀프로젝트 (18)
        • SNS(키보드워리어) (9)
        • close_sea (9)
      • 개인프로젝트 (1)
        • Around Flavor (1)
        • CHAM (13)
        • ethFruitShop (5)
      • 독서 (0)
        • 스프링부트와 AWS로 혼자 구현하는 웹 서비스 (0)
  • 블로그 메뉴

    • 홈
    • 개발일기
    • CS
    • 실습
    • 코딩테스트
    • 웹
    • Go
    • node.js
    • 팀플
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    CSS
    go언어
    컨테이너
    go
    React
    도커
    30일 챌린지
    30일챌린지
    ERC721
    node
    html
    nodejs
    명령어
    node.js
    mysql
    erc20
    하이퍼레저
    블록체인
    프로그래머스
    js
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
TeTedo.
[JavaScript] 배열 관련 문제 2개
상단으로

티스토리툴바