String 담긴 배열의 공통된 시작 단어 반환하기, JavaScript

라용·2022년 9월 2일
0

위코드 - 스터디로그

목록 보기
27/100

위코드 코드카타를 풀며 정리한 내용입니다.

문제

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
profile
Today I Learned

0개의 댓글