
😎
result
: 탐색된 최소 Index의 문자가 담길 배열
leastIdx
: 현재 탐색된 최소 Index의 합
list1
이 항상 list2
보다 짧은 길이를 갖도록 설정
list
순회
4-1. 현재 문자가 list2
에 없다면 다음 탐색
4-2. 현재 Index가 탐색된 최소 Index보다 크다면 다음 탐색
4-3. 현재 Index가 탐색된 최소 Index보다 작다면, result
초기화 후 최소 Index의 합을 현재 Index로 설정
4-4. result
에 현재 문자열 추가
- 탐색된 최소 Index의 문자들(
result
)을 출력
function findRestaurant(list1: string[], list2: string[]): string[] {
let result = []
let leastIdx = Infinity
if(list1.length > list2.length) [list1, list2] = [list2, list1]
for(let i = 0; i < list1.length; i++) {
const curStr = list1[i]
const list2Idx = list2.indexOf(curStr)
if(list2Idx < 0) continue
const curIdx = i + list2Idx
if(curIdx > leastIdx) continue
if(curIdx < leastIdx) {
result = []
leastIdx = curIdx
}
result.push(curStr)
}
return result
};