[프로그래머스] 서울에서 김서방 찾기

개발잘하기프로젝트·2020년 11월 11일
0
post-thumbnail

🤔 문제

프로그래머스 - 서울에서 김서방 찾기

String형 배열 seoul의 element중 "Kim"의 위치 x를 찾아, "김서방은 x에 있다"는 String을 반환하는 함수, solution을 완성하세요. seoul에 "Kim"은 오직 한 번만 나타나며 잘못된 값이 입력되는 경우는 없습니다.

❗️ 제한

  • seoul은 길이 1 이상, 1000 이하인 배열입니다.
  • seoul의 원소는 길이 1 이상, 20 이하인 문자열입니다.
  • "Kim"은 반드시 seoul 안에 포함되어 있습니다.

💡 접근

xseoul 배열에서 'Kim'의 location 즉, index값을 말한다. 중복해서 나타나는 것이 아니라 오직 한번만 나타나므로 indexOf() 메서드, findIndex()메서드를 이용해서 찾아냈다.

indexOf() 메서드의 경우 매개변수로 검색할 요소를 넣어 만족하는 첫번째 요소의 index를 반환하고, findIndex() 메서드는 판별 함수를 만족하는 첫번째 요소의 index를 반환한다. 둘다 만족하지 못하면 -1을 반환한다.

테스트 케이스에 대한 실행 결과로 indexOf() 메서드가 findIndex() 메서드보다 빠르게 나타났다. findIndex() 메서드는 아무래도 callback함수의 판별 조건을 따져야하는 로직이 추가적으로 들어가다보니 느릴 수밖에 없다고 생각한다.

🧑🏻‍💻 코드

// solution 1
// 0.3 ~ 0.5ms
function solution(seoul) {
  const location = seoul.indexOf('Kim');
  return `김서방은 ${location}에 있다`;
}

// solution 2
// 0.5 ~ 0.7ms
function solution(seoul) {
  const location = seoul.findIndex(s => s === 'Kim');
  return `김서방은 ${location}에 있다`;
}

solution(['Jane', 'Kim']); // '김서방은 1에 있다'

📝 참고

MDN - Array.prototype.indexOf()
MDN - Array.prototype.findIndex()

profile
🏠 ☕️ 🎞 🌿 + 🧑🏻‍💻

0개의 댓글