Code Kata#6

Hyunjun Kim
akiakma
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시간 고민하다가 이 방법을 포기했다. 어쩐지 쉽다고 느낄때부터 뭔가 잘못됬다고 느꼈어야 했다. 어쨌든 고민고민하다가 너무 많은 시간을 소모한것 같아 상진님 블로그를 통해서 해결했다..

위의 설명을 나열하자면 다음과같다.

  1. 다른 문자열과 비교할 기본 비교대상을 설정한다!(prefix = ‘start’)
  2. strs에 아무것도 없으면 “”빈 문자열 반환!
  3. 반복문실행한다 . 반복문은 1부터 시작해서 1씩증가하는데 strs배열의 길이만큼까지 반복할것입니다.
  4. strs[i]번째에 prefix즉 ‘start’가 있으면 0이 나올것이고(indexOf()가 0 이 나온다는것은 0번째 인덱스에 start가 있다는것이다.) 없으면 -1이 나올것이다. while문이 0이 나오면 종료된다 -1이나오면 계속해서 반복할것이다.
  5. prefix는 계속해서 수정될것이다. prefix에는 기본적으로 ‘start’가 들어있고 -1씩 length가 줄어들면서 indexOf가 0이 될때까지 strs의 1,2,3인덱스에 포함되어지는 문자열로 점점 줄어들것이다. 없으면 결국 substring(0,0)이 되면서 prefix는 0이 될것이다. ‘’이되면 indexOf는 자동으로0이되고..

--

--