알고리즘: findBugInApples

Kyoorim LEE·2022년 6월 10일
0

알고리즘TIL

목록 보기
2/40

문제

2차원 배열(배열을 요소로 갖는 배열)을 입력받아 'B'의 위치 정보를 요소로 갖는 배열을 리턴해야 합니다.

입력

인자 1 : arr

  • 배열을 요소로 갖는 배열
  • arr[i]는 'A' 또는 'B'만을 요소로 갖는 배열

출력

  • 'B'의 위치 정보(행, 열)를 요소로 갖는 배열을 리턴해야 합니다.
  • 배열의 요소는 차례대로 행, 열입니다. ([행, 열])
  • 행: 'B'를 요소로 갖는 배열 arr[i]의 인덱스 i
  • 열: arr[i]에서 'B'(arr[i][j])의 인덱스 j

주의사항

  • arr, arr[i]의 길이는 다양하게 주어집니다.
  • 항상 한 개의 문자열 'B'가 존재합니다.

입출력 예시

let output = findBugInApples([['A'], ['B']]);
console.log(output); //[1, 0]
output = findBugInApples([
  ['A', 'A', 'A', 'A', 'A'],
  ['A', 'B', 'A', 'A', 'A'],
  ['A', 'A', 'A', 'A', 'A'],
  ['A', 'A', 'A', 'A', 'A'],
  ['A', 'A', 'A', 'A', 'A'],
]);
console.log(output); //[1, 1]

풀이

접근방법

  • 이중for문 사용
    - 첫번째 for문: 첫번째 배열의 요소를 돈다
    - 두번째 for문: 두번째 배열의 요소를 돈다
    • arr[i][j] === 'B'로 찾아낸 후
    • return [i,j] 한다
function findBugInApples(arr) {
  let result = []; // 정의해줄 필요 없음 
    for(let i = 0; i < arr.length; i++) {
      for(let j = 0; j < arr[i].length; j++) {
          if(arr[i][j] === 'B') {
          result = [i,j]
        }
      }
    } return result;
  }

한 줄평

실패한 접근방법

let result = []
//중략
firstResult = result.unshift(i);
finalResult = firstResult.pop(j); 

했더니 다음과 같이 에러가 났다

VM1991:7 Uncaught TypeError: firstResult.push is not a function
    at findBugInApples (<anonymous>:7:37)
    at <anonymous>:1:1

firstResult = result.unshift(i);의 리턴값이 배열이 아니라 '배열의 길이'로 리턴되기 때문이다~!!!
pop, push, shift, unshift를 쓸 경우 배열의 길이 값으로 리턴되는 것을 명심하잣

profile
oneThing

0개의 댓글