[ 문제 ]
입출력 예시를 보고 이해하는게 가장 쉽다.
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]로 간단하게 적어줬다.
더 간단하고 좋은 것 같다.
역시 레퍼런스 보는건 도움이 많이 된다.