strs은 단어가 담긴 배열입니다. 공통된 시작 단어(prefix)를 반환해주세요.
strs = ['start', 'stair', 'step']
return은 'st'
strs = ['start', 'wework', 'today']
return은 ''
function getPrefix (strs){
let answer = '';
let sortStrs = strs.sort();
if(sortStrs.length === 0){
return ''
}
for(let i = 0; i <sortStrs[0].length; i++){
if(sortStrs[0][i] === sortStrs[sortStrs.length-1][i]){
answer += sortStrs[0][i]
}else{
answer
}
}
return answer;
}
일단 최종 답이 들어갈 빈 문자열을 만든다.
let answer = '';
인자로 들어오는 배열을 sort를 이용해 정렬해준다. sort를 이용하면 모든 원소들을 비교 할 필요 없이 시작과 끝만 비교해 문제를 해결할 수 있게 된다.
let sortStrs = strs.sort();
어떤 값들이 들어올 지 모르기 때문에(ex, undefined...) 만약 배열의 길이가 0이라면 그대로 '' 빈 값을 반환한다는 조건을 추가한다.
if(sortStrs.length === 0){ return '' }
첫번째 문자의 i번째 글자와 마지막 글자의 i번째 글자가 같다면 계속해서 빈 문자열에 추가해준다. 만약 같지 않게 된다면 그동안 추가해준 그 값을 바로 반환한다.
for(let i = 0; i <sortStrs[0].length; i++){ if(sortStrs[0][i] === sortStrs[sortStrs.length-1][i]){ answer += sortStrs[0][i] }else{ answer }
여러개의 원소를 비교할 수 없다는 걸 깨닫고 새로운 방법을 찾는게 핵심인 문제였다.
sort라는 '배열의 순서를 규칙에 따라 재정렬'해주는 메서드는 알고리즘에서 자주 쓰인다고 했다.
잘 기억해놨다가 꼭 써먹어야지