문제
strs은 단어가 담긴 배열입니다. 공통된 시작 단어(prefix)를 반환해주세요.
예를 들어 strs = ['start', 'stair', 'step'] return은 'st'
strs = ['start', 'wework', 'today'] return은 ''
내 Flow
- 배열의 요소를 쪼개어 String형으로 변환한다.
- 더블 for문으로 각 string의 같은 인덱스에서 같은 문자가 나오면 새로운 빈 배열에 push한다.
💬 flow를 생각하고 보니까 배열이 3개인데 그걸 어떻게 한꺼번에 각각의 인덱스를 비교할지... 막혔다. 뇌정지...
풀이
const getPrefix = strs => {
let answer = '';
let sortStrs = strs.sort();
if(sortStrs.length === 0){
return ''
}
for(let i = 0; i <sortStrs[0].length; i++){
if(sortStrs[0][i] === sortStrs[sortStrs.length-1][i]){
answer += sortStrs[0][i]
}else{
answer
}
}
return answer;
}
- 일단 최종 답이 들어갈 빈 문자열을 만든다.
- 인자로 들어오는 배열을 sort를 이용해 정렬해준다. sort를 이용하면 모든 원소들을 비교 할 필요 없이 시작과 끝만 비교해 문제를 해결할 수 있게 된다.
- 어떤 값들이 들어올 지 모르기 때문에(ex, undefined...) 만약 배열의 길이가 0이라면 그대로 '' 빈 값을 반환한다는 조건을 추가한다.
- 첫번째 문자의 i번째 글자와 마지막 글자의 i번째 글자가 같다면 계속해서 빈 문자열에 추가해준다. 만약 같지 않게 된다면 그동안 추가해준 그 값을 바로 반환한다.
참고
'알고리즘 > 코드카타' 카테고리의 다른 글
Week2 - Day3 (Javascript) (0) | 2022.07.14 |
---|---|
Week2 - Day2 (Javascript) (0) | 2022.07.14 |
Week2 - Day1 (Javascript) (0) | 2022.07.11 |
Week1 - Day3 (Javascript) (0) | 2022.07.06 |
Week1 - Day2 (Javascript) (0) | 2022.07.05 |