본문 바로가기

카테고리 없음

12_findBugInApples

[ 문제 ]

입출력 예시를 보고 이해하는게 가장 쉽다.

2차원 배열에서 'B'를 찾아 그 B의 위치, 즉 index를 반환하면 된다.

 

[ 풀이 ]

나의 로직은 다음과 같다.

1/ 이중 반복문을 이용하여 'B'를 찾는다.

2/ 'B'일때의 i, j의 값을 빈 배열에 넣어 return 한다.

function findBugInApples(arr) {
  let result = []; //먼저 빈 배열을 선언한다.
  for(let i = 0; i < arr.length; i++){ 
    for(let j = 0; j < arr[i].length; j++){ //이중 반복문을 이용하여 'B'를 찾는다.
      if(arr[i][j] === 'B'){ //'B'를 찾으면
        result.push(i);
        result.push(j); //i, j순서대로 result값 안에 넣는다.
        return result; //그리고 바로 return을 한다.
      }
    }
  }
}

꽤 간단한 문제였다. 

알고리즘은 처음 문제를 봤을때는 어렵게 느껴지지만, 하나하나 풀다보면 조금씩 해결되는 것 같다.

(물론 그렇게 어렵지 않은 문제라서 그런듯....)

 

내가 예전에 적어놓은 풀이는 다음과 같다.

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.push(i);
      result.push(j);
    }
  }
}
return result;
}

로직은 동일하지만, 하나 다른점이 있다면 반복문을 다 돌린 후 return을 한다는 것.

하지만 이 방법은 효율적이지 않은 것 같다.

'B'를 찾아 바로 return을 하면 더이상 반복문이 돌지 않지만, 저 풀이는 'B'를 찾았음에도 불구하고 반복문을 끝까지 다 돌리기 때문이다.

 

오...

지난번 풀이보다 더 나아지고 있다.

성장해 나가고 있다! 좋다!

 

[ 레퍼런스 ]

레퍼런스도 내 로직과 거의 동일하지만, result라는 빈 배열에 하나하나 push로 i, j값을 넣어주는게 아니라,

바로 return [i, j]로 간단하게 적어줬다.

더 간단하고 좋은 것 같다.

역시 레퍼런스 보는건 도움이 많이 된다.