AIL( Algorithm I Learned)

#AIL_23.11.15 // Programmers_서울에서 김서방 찾기

k0z 2023. 11. 15. 21:24

## AIL_서울에서 김서방 찾기

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

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

***입출력 예
seoul return
["Jane", "Kim"] "김서방은 1에 있다"

## solution.JavaScript

1. 문제의 접근 방식

주어진 문제는 배열 `seoul`에서 "Kim"의 위치를 찾아서 그 위치를 문자열에 포함하여 반환하는 것입니다. 배열 `seoul`에서 "Kim"은 오직 한 번만  나타난다고 가정합니다. 


2. 문제풀이

function solution(seoul) {
    let i = seoul.indexOf("Kim");
    return `김서방은 ${i}에 있다`;
}
/*
테스트 1
입력값 〉	["Jane", "Kim"]
기댓값 〉	"김서방은 1에 있다"
실행 결과 〉	테스트를 통과하였습니다.
*/

 

1. `indexOf()` 메서드를 사용하여 "Kim"이라는 문자열이 배열 `seoul`에서 처음 등장하는 인덱스를 찾습니다. 

- `indexOf()` 메서드는 배열에서 지정된 요소의 인덱스를 반환합니다. 

- `"Kim"` 문자열이 `seoul`에서 발견되면 해당 인덱스가 반환됩니다. 

 

2. 반환된 인덱스를 활용하여 원하는 출력 형식인 `"김서방은 x에 있다"` 문자열을 생성합니다. 

- 찾은 인덱스 값을 활용하여 해당 위치를 문자열에 포함시킵니다. 


3. 다른사람의 문제풀이 및 접근방식 분석

const solution = (arr) => `김서방은 ${arr.findIndex(s => s === 'Kim')}에 있다`;
/*
테스트 1
입력값 〉	["Jane", "Kim"]
기댓값 〉	"김서방은 1에 있다"
실행 결과 〉	테스트를 통과하였습니다.
*/

 

1. `findIndex()` 메서드를 활용하여 배열 `arr`에서 조건을 만족하는 첫 번째 요소의 인덱스를 찾습니다. 

- `findIndex()` 메서드는 주어진 함수의 조건을 만족하는  배열의 첫 번째 요소의 인덱스를 반환합니다. 

- 주어진 코드에서는 `s === 'Kim'` 조건을 사용하여 "Kim"이라는 요소를 찾습니다. 

 

2. 찾은 인덱스를 활용하여 `"김서방은 x에 있다"` 형태의 문자열을 생성합니다. 

- `findIndex()` 메서드에서 찾은 인덱스를 활용하여 문자열 템플릿 리터럴을 이용해 원하는 형식으로 문자열을 만듭니다. 

 

코드에서 사용되는 화살표 함수 `(arr) => ...`은 ES6 화살표 함수 표현식입니다. 이 함수는 `arr`이라는 배열을 받아 `findIndex()` 메서드를 사용하여 "Kim" 요소를 찾고 해당 요소의 인덱스를 활용하여 문자열을 반환합니다. 


# indexOf()와 findIndex() 적용 시점

`indexOf()`는 단순히 특정 요소의 인덱스를 찾을  때 사용됩니다. 특정 값이 배열 내에 있는지 여부를 확인하고자 할 때 유용합니다. 

 

`findIndex()`는 더 복잡한 조건에 따라 배열 요소의 인덱스를 찾을 때 사용됩니다. 주어진 조건에 따라 배열을 탐색하고 해당 조건을 만족하는 첫 번째 요소의 인덱스를 반환합니다.