본문 바로가기
junior developer :)/알고리즘 & 코딩테스트

알고리즘 연습_이차원 배열 안에서 특정 문자 찾기

by ㅁ윤슬ㅁ 2022. 10. 14.
728x90
반응형
Q. 2차원 배열(배열을 요소로 갖는 배열)을 입력받아 "A"의 위치 정보를 요소로 갖는 배열을 리턴해라

* arr[i]는 'A' 또는 'B' 만을 요소로 갖는다
** 항상 한개의 문자열 'A'가 존재한다

- 접근 방식

제일 밖에 있는 배열을 for문을 통해 돌면서 안에 해당 문자가 있는지 확인한 뒤 ( indexOf )
A 열의 index 번호를 새로운 배열 뒤에 추가한다(push)
배열에 맨 앞 인덱스에 해당 인덱스 번호를 추가한다(unshift)

- 나의 풀이 방식

function findA(arr) {

  let result = []
  
  for(let i = 0; i<arr.length; i++)
  {
      if(arr[i].indexOf('A') !== -1)
      {
        result.push(arr[i].indexOf('A')) 
        result.unshift(i)
      }
  }
  return result
}

// ex. [['B','B']['A','B']]의 이차원배열을 인자로 주었을 때
// [1,0]의 결과값이 나온다

- 다른 풀이 방식

function findA(arr) {
  for (let i = 0; i < arr.length; i += 1) {
    for (let j = 0; j < arr[i].length; j += 1) {
      if (arr[i][j] === 'A') {
        return [i, j];
      }
    }
  }
}

내 풀이 방식과 다른 점은 

이중 for문을 이용해 내부에 있는 값들을 하나씩 확인해서 A가 있으면 i인덱스와 j인덱스를 출력해주는 것
처음에는 저 방법을 생각했으나 다양한 메소드를 사용해서 작성해보고 싶어 위의 방법으로 해결했다

사용했던 메서드

indexOf() 특정 문자를 찾는데 사용되는 메서드로, 찾으면 인덱스 번호, 없으면 -1을 반환한다

push() object의 맨 마지막에 값을 추가해주는 메서드로 immutable하다

unshift() object의 맨 앞에 값을 추가해주는 메서드로 immutable하다

728x90
반응형