[Codekata] 알고리즘 week1-5

HyeLin·2021년 10월 26일
0
post-thumbnail

[문제]

strs은 단어가 담긴 배열입니다. 공통된 시작 단어(prefix)를 반환해주세요.
예를 들어 strs = ['start', 'stair', 'step'] return은 'st'
strs = ['start', 'wework', 'today'] return은 ''

[해답]

const getPrefix = strs => {
 let prefix = "";
  
  if(strs.length === 0) {
    return prefix;
  } 
  
  const checktStr = strs[0];
  console.log(checktStr)
  
  for(let i of checktStr) {
    prefix += i;
    console.log(prefix)
    
    for(let j of strs) {
      if(!j.startsWith(prefix))
        return prefix.slice(0,-1)
    }
  }
  return prefix;
}

strs=['start', 'stair', 'step'];

[나의 해석]

 const checktStr = strs[0];
  1. 내가 입력한 배열의 첫번째 요소를 기준으로 비교하려고 변수 설정
    strs = ['start', 'wework', 'today']
  let prefix = "";

  for(let i of checktStr) {
    prefix += i;
   }
    
  1. checkStr=strs[0]="start" 이므로 prefix에 s가 들어간다.
  for(let i of checktStr) {
    prefix += i;
    console.log(prefix)
    
    for(let j of strs) {
      if(!j.startsWith(prefix))
        return prefix.slice(0,-1)
    }
  }
  1. 안에 중첩 for문을 실행. strs = ['start', 'wework', 'today']에서 if(!j.startsWith(prefix) 만약 start가 prefix(s)로 시작하지 않는다면, prefix.slice(0,-1)을 리턴. 하지만 s로 시작하기 때문에 실행하지 않는다.
  2. 이제 wework, today..가 s로 시작하지 않기 때문에 아무것도 리턴되지 않고 ""이 리턴된다.

아무말이나.... 써버린 ......기술 블로그 ....^^

profile
개발자

0개의 댓글