Code Kata#6
Published in
2 min readMay 6, 2020
#문제
strs은 단어가 담긴 배열입니다.
공통된 시작 단어(prefix)를 반환해주세요.예를들어,
strs = ['start', 'stair', 'step']
return은 'st'strs = ['start', 'wework', 'today']
return은 ''
지금까지 풀었던 코드카타중에 제일 쉬웠다. 문제를 보고 바로 해결방법이 나왔기 때문이다. 내가 고안해낸방법은 배열의 length를 파악하고 배열의 첫번째 인덱스부터 끝의 인덱스의 문자열을 빼서 하나씩 검사하는방법이다..
예를들어
for(var i = 0; i < strs.length; i++){
for(var j = 0; j < strs[i].length; j++){
.....................
}
}
이런식으로 진행하는것인데 a,e,i,o,u의 모음을 만나면 그 앞 자음들을 선별해서 같으면 그 자음을 반환하는 식으로… 하지만 실패. 2시간 고민하다가 이 방법을 포기했다. 어쩐지 쉽다고 느낄때부터 뭔가 잘못됬다고 느꼈어야 했다. 어쨌든 고민고민하다가 너무 많은 시간을 소모한것 같아 상진님 블로그를 통해서 해결했다..
위의 설명을 나열하자면 다음과같다.
- 다른 문자열과 비교할 기본 비교대상을 설정한다!(prefix = ‘start’)
- strs에 아무것도 없으면 “”빈 문자열 반환!
- 반복문실행한다 . 반복문은 1부터 시작해서 1씩증가하는데 strs배열의 길이만큼까지 반복할것입니다.
- strs[i]번째에 prefix즉 ‘start’가 있으면 0이 나올것이고(indexOf()가 0 이 나온다는것은 0번째 인덱스에 start가 있다는것이다.) 없으면 -1이 나올것이다. while문이 0이 나오면 종료된다 -1이나오면 계속해서 반복할것이다.
- prefix는 계속해서 수정될것이다. prefix에는 기본적으로 ‘start’가 들어있고 -1씩 length가 줄어들면서 indexOf가 0이 될때까지 strs의 1,2,3인덱스에 포함되어지는 문자열로 점점 줄어들것이다. 없으면 결국 substring(0,0)이 되면서 prefix는 0이 될것이다. ‘’이되면 indexOf는 자동으로0이되고..