알고리즘 91

[Lv_2] 행렬의 곱셈

class Solution { public int[][] solution(int[][] arr1, int[][] arr2) { int[][] answer = new int[arr1.length][arr2[0].length]; // arr1 행렬 열 순회 for (int i = 0; i < arr1.length; i++) { // arr2 행렬 행 순회 for (int j = 0; j < arr2[0].length; j++) { int sum = 0; // arr1 행렬 행의 각 값과 arr1 행렬의 각 열값을 곱해준다. for (int k = 0; k < arr1[i].length; k++) { sum += arr1[i][k] * arr2[k][j]; } answer[i][j] = sum; } } ret..

알고리즘 2023.08.16

[Lv_2] 게임 맵 최단거리

function solution(maps) { // 큐 활용 var q = [[0, 0, 1]]; while (q.length) { var [y, x, answer] = q.shift(); // 배열 범위 내 + 현 인덱스 값 체크 => 1이면 분기처리 if (y = 0 && x = 0 && maps[y][x] === 1) { // 현 인덱스 방문금지 => 0 처리 maps[y][x] = 0; // 상대방 진영 도달여부 체크 if (y === maps.length - 1 && x === maps[0].length - 1) { // 큐의 매 실행마다 각 방향별로 순회하면서 진행되고, // 가장 먼저 도달한 값에서 return 된다..

알고리즘 2023.08.16

[Lv_2] 쿼드압축 후 세기

모든 배열의 값이 같은 경우를 처리하는 것이 까다로웠다. import java.util.*; class Solution { int[][] data = null; int zeroCnt = 0; int oneCnt = 0; public int[] solution(int[][] arr) { data = arr; // 모든 수가 같은 배열일 경우 체크 Boolean isOneValue = true; int standard = data[0][0]; for (int[] d : data) { for (int n : d) { if (n != standard) { isOneValue = false; } } } if (isOneValue) { if (standard == 0) { zeroCnt += 1; } else { ..

알고리즘 2023.08.16