[CodeKata] getPrefix 함수 구현하기
글 작성자: 개발자 올라프
문제
strs은 단어가 담긴 배열이다. 공통된 시작 단어(prefix)를 반환하기로 한다.
예를 들어 strs=['start', 'stair', 'step'] return은 'st'
strs = ['start', 'wework', 'today'] return은 ''
const getPrefix = strs => {
let prefix = ''; // prefix 없을 경우 ''을 반환한다.
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]){
prefix += sortStrs[0][i]
console.log(prefix);
}else{
break;
}
}
return prefix;
}
sorting 하는 이유
let sortStrs = strs.sort();
문제는 모든 단어들을 비교해서 공통된 시작 단어(prefix)를 반환하는 것이다. 단어를 정렬하면 첫 번째 값과 마지막 값만 비교해도 공통으로 시작하는 단어를 찾을 수 있다.
예를 들어 prezzz, preccc, prebbb, preaaa라는 단어를 정렬하면 preaaa, prebbb, preccc, prezzz로 정렬되며 굳이 중간에 있는 값들을 비교하지 않고 처음과 끝 값만 비교해도 어떤 단어가 공통으로 시작되는지 찾아낼 수 있다.
정렬된 첫 번째 값과 마지막 값 비교
for(let i = 0; i <sortStrs[0].length; i++){
if(sortStrs[0][i] === sortStrs[sortStrs.length-1][i]){
prefix += sortStrs[0][i]
console.log(prefix);
}else{
break;
}
}
첫 번째, 마지막 값의 알파벳을 앞에서부터 비교하고 prefix에 공통 단어를 추가한다. i의 반복 횟수는 첫 번째 단어의 길이만큼 설정했는데 그 이상 비교하는 것은 의미 없다. 왜냐하면 모든 단어의 공통된 시작 단어를 찾는 것인데 첫 번째 단어의 길이만큼 모두 같다면 그 자체가 공통 시작 단어인 것이다.
else { break; }는 공통 단어가 아닐 경우 바로 반복문을 빠져나갈 수 있도록 했다.
'⭐️ Memory > 교육수강 회고' 카테고리의 다른 글
React 댓글기능 구현하기 (1) | 2022.05.15 |
---|---|
위코드 3주차 회고 - React (0) | 2022.05.15 |
[CodeKata] sameReverse 함수 구현하기 (0) | 2022.05.12 |
[CodeKata] getLengthOfStr 함수 구현하기 (0) | 2022.05.11 |
[CodeKata] reverse 함수 구현하기 (0) | 2022.05.10 |
댓글
이 글 공유하기
다른 글
-
React 댓글기능 구현하기
React 댓글기능 구현하기
2022.05.15 -
위코드 3주차 회고 - React
위코드 3주차 회고 - React
2022.05.15 -
[CodeKata] sameReverse 함수 구현하기
[CodeKata] sameReverse 함수 구현하기
2022.05.12 -
[CodeKata] getLengthOfStr 함수 구현하기
[CodeKata] getLengthOfStr 함수 구현하기
2022.05.11