2차원 배열에서 값을 구하기

·2022년 3월 29일
0

알고리즘

목록 보기
34/47
post-thumbnail

그냥 보자마자 푸는게 오래걸리겠다 싶어서 포기해버렸던 문제였는데
다시 풀고나니 10분도 안되서 풀어가지고 정말 찌인하게 현타가 왔던 문제였다.

저번주 파트너(옆자리앉고, 같이 매일 밥먹는)분에게 문제를 너무 어렵게 생각해서 시도를 못하는 경우가 발견되는 것 같다. 라는 지적을 들었는데.... 그게 내 발목을 잡았다 졸라 간단한건데

2차원 배열이라고 해서 걍 어 오래걸리겠네 이거 풀고 있으면 시간내로 다른거 못풀겠다 라고 포기함....

아무튼 문제다.

문제 설명

배열 속 A가 존재하는 위치를 배열로 출력해주세요.
다중배열의 형태로 존재합니다.

주의사항

A가 여러개 있을 경우 다중 배열
한개만 있을 경우 단일 배열
아무것도 없을 경우 빈배열을 반환해주세요.

입력값

arr = [
            ["B", "B", "B", "A"],
            ["B", "B", "A", "B"],
            ["B", "B", "B", "B"],
            ["B", "A", "B", "B"]
        ]

출력값

[[ 0, 3 ], [1, 2], [3, 1]]


풀이 코드

function findGold(arr) {
 let arr2 = [];
  for (let i = 0; i < arr.length; i++) {
    for (let j = 0; j < arr.length; j++) {
      arr[i][j] === "B" ? arr2.push([i, j]) : [];
    }
  }
  if (arr2.length === 1) {
    return arr2[0];
  } else {
    return arr2;
  }
}
  1. B가 존재하는 위치를 찍어버리고
  2. 없으면 빈배열
  3. 조건문을 걸어서 한개만 있으면 인덱스 0번 다중 배열 상태인데 딱 한개만 빼기
  4. 1개가 아니면 그대로 내보내는 방식으로 풀었다.

근데 문득 궁금증이 생겨났는데

지금은 배열의 길이가 4개고 속의 요소고 4개라서 arr.length라는 문제풀이가 가능했다.
근데 배열의 길이와 요소의 갯수가 서로 다르거나 요소의 갯수가 홀로 다르다면....어떻게 풀어야하는지 생각이 안난다;

다중배열로 되어있는 형태를 모조리 분해해서 배열 단위로 구조를 분해해서
그 배열에 새로운 이름을 달아줘서 그 배열의 길이만큼 진행을 해야하는건지 으...으음.....
생각을 좀 해봐야할 것 같다.

하고 2분만에 해결책을 찾아왔다!

for (let j = 0; j < arr[i].length; j++)
그냥 포문 돌아갈때 arr.length말고 [i]값 넣어주면 해결할 수 있었다 ㅎ.ㅎ

profile
물류 서비스 Backend Software Developer

0개의 댓글