위코드 코드카타를 풀며 정리한 내용입니다.
strs 단어가 담긴 배열에서 공통된 시작 단어를 반환합니다.
// 입력값
strs = ['start', 'stair', 'step']
// 출력값
'st'
배열의 첫번째 요소를 STR 기준값으로 설정한 후 공통되는 글자를 비교하다가, 다른 값이 나오는 인덱스 위치에서 STR 을 잘라 새로운 기준값을 만듭니다. 그렇게 마지막 배열 요소까지 비교해서 최종에 남은 기준값을 반환합니다.
우선 배열의 첫번째 요소로 기준값을 정하고, 입력되는 배열이 0개일 때 빈 문자열을 반환합니다.
const getPrefix = strs => {
let preFix = strs[0];
if (strs.length < 1) {
return '';
}
}
이제 인자로 들어온 배열의 길이와, 고정한 배열 요소(스트링)의 길이로 중첩된 포문을 작성하고,
const getPrefix = strs => {
let preFix = strs[0];
if (strs.length < 1) {
return '';
}
for (let i = 0; i < strs.length; i++) {
for (let j = 0; j < preFix.length; j++) {
}
}
return preFix;
}
조건문으로 기존 배열의 요소의 개별 문자와 기준 값의 개별 문자를 비교해서 다를 때를 기준으로 기준 값을 잘라줍니다.
const getPrefix = strs => {
let preFix = strs[0];
if (strs.length < 1) {
return '';
}
for (let i = 0; i < strs.length; i++) {
for (let j = 0; j < preFix.length; j++) {
if (strs[i][j] !== preFix[j]) {
preFix = strs[i].slice(0, j);
}
}
}
return preFix;
}
위 코드에 아래처럼 콘솔을 찍어서 확인해보면,
const getPrefix = strs => {
let preFix = strs[0];
if (strs.length < 1) {
return '';
}
for (let i = 0; i < strs.length; i++) {
console.log("=======================", i);
console.log("preFix 값: ", preFix);
console.log("strs[i] 값: ", strs[i]);
for (let j = 0; j < preFix.length; j++) {
console.log("--------", j);
console.log('strs[i][j] 값:', strs[i][j]);
console.log('preFix[j] 값:', preFix[j]);
if (strs[i][j] !== preFix[j]) {
preFix = strs[i].slice(0, j);
console.log("변경된 preFix 값: ", preFix);
}
}
}
return preFix;
}
콘솔 출력
======================= 0
preFix 값: start
strs[i] 값: start
-------- 0
strs[i][j] 값: s
preFix[j] 값: s
-------- 1
strs[i][j] 값: t
preFix[j] 값: t
-------- 2
strs[i][j] 값: a
preFix[j] 값: a
-------- 3
strs[i][j] 값: r
preFix[j] 값: r
-------- 4
strs[i][j] 값: t
preFix[j] 값: t
======================= 1
preFix 값: start
strs[i] 값: stair
-------- 0
strs[i][j] 값: s
preFix[j] 값: s
-------- 1
strs[i][j] 값: t
preFix[j] 값: t
-------- 2
strs[i][j] 값: a
preFix[j] 값: a
-------- 3
strs[i][j] 값: i
preFix[j] 값: r
변경된 preFix 값: sta
======================= 2
preFix 값: sta
strs[i] 값: step
-------- 0
strs[i][j] 값: s
preFix[j] 값: s
-------- 1
strs[i][j] 값: t
preFix[j] 값: t
-------- 2
strs[i][j] 값: e
preFix[j] 값: a
변경된 preFix 값: st