단어가 담긴 strs 배열을 받았을 때, 공통된 시작 단어(prefix)를 반환해주세요.
strs = ['start', 'stair', 'step']일 때, return: 'st'
strs = ['start', 'wework', 'today']일 때, return: ''
const getPrefix = strs => {
let result = ""
for (var i = 0; i < strs.length; i++) {
let count = 0
let comp = strs[0].charAt(i)
for (var j = 0; j < strs.length; j++) {
if (comp == strs[j].charAt(i)) {
count++
}
}
if (count == strs.length) {
result = result + comp
} else {
return result
}
}
return result
}
이번에도 코드를 최적화하지 못하고 생각 그대로의 날것이 만들어져버렸다.
최적화, 재능없을지도..?
간단한 로직:
항상 똑같지만, 나의 국밥 해결방법인 전체 탐색 되시겠다.
우리가 할 것은 배열에 담긴 값 하나하나씩 글자단위로 비교하여
상황에 따라 결과값에 append하여 출력할 예정이다.
오디션 프로그램에서 심사위원들의 따봉을 받으면 통과하는 것 처럼,
그 과정에서 전체 배열의 갯수만큼 따봉을 받으면 합격! 결과값에 추가된다.
단, 조건은 만장일치의 따봉을 받아야 한다는 것.
코드 해석:
결과값이 되어 줄 result를 선언함과 동시에 초기화. for문으로 쑝.
심사위원들의 따봉 갯수를 선언한다. 변수명은 count.
오와 열은 항상 해당 열 첫번째 훈련병이 담당한다. strs[0]의 i번째 글자를 comp(are할) 값으로 가져온다.
다시 for문 입성. strs배열 속 모든 요소들의 i번째 글자가 comp와 동일한지 검사한다, 동일하다면 따봉의 갯수를 ++.
군장검사가 끝났다면, 이제 따봉의 갯수를 비교할 차례다.
따봉의 갯수가 머릿수와 같다면, 해당 글자를 result에 추가하고
그렇지 못하다면 그대로 game over 시켜준다.
생각의 흐름을 따라 코드를 작성하긴 했지만, 잘 작동하면 그걸로 만사오케이가 아닐까?