Algorithm - 공통된 시작 단어(prefix) 반환하기

박태환·2021년 7월 24일
0

Algorithm

목록 보기
3/20
post-thumbnail

문제 설명

strs은 단어가 담긴 배열입니다. 공통된 시작 단어(prefix)를 반환해주세요.

입출력 예

  • strs = ['start', 'stair', 'step']
    return은 'st'

  • strs = ['start', 'wework', 'today']
    return은 ''

나의 풀이

function 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;
}

풀이 설명

일단 최종 답이 들어갈 빈 문자열을 만든다.

let answer = '';

인자로 들어오는 배열을 sort를 이용해 정렬해준다. sort를 이용하면 모든 원소들을 비교 할 필요 없이 시작과 끝만 비교해 문제를 해결할 수 있게 된다.

let sortStrs = strs.sort();

어떤 값들이 들어올 지 모르기 때문에(ex, undefined...) 만약 배열의 길이가 0이라면 그대로 '' 빈 값을 반환한다는 조건을 추가한다.

if(sortStrs.length === 0){
    return ''
  }

첫번째 문자의 i번째 글자와 마지막 글자의 i번째 글자가 같다면 계속해서 빈 문자열에 추가해준다. 만약 같지 않게 된다면 그동안 추가해준 그 값을 바로 반환한다.

for(let i = 0; i <sortStrs[0].length; i++){
    if(sortStrs[0][i] === sortStrs[sortStrs.length-1][i]){
       answer += sortStrs[0][i]
    }else{
       answer
    }

느낀 점

여러개의 원소를 비교할 수 없다는 걸 깨닫고 새로운 방법을 찾는게 핵심인 문제였다.
sort라는 '배열의 순서를 규칙에 따라 재정렬'해주는 메서드는 알고리즘에서 자주 쓰인다고 했다.
잘 기억해놨다가 꼭 써먹어야지

참고-https://pro-self-studier.tistory.com/23

profile
mekemeke

0개의 댓글