<코드타카 1주차 05.>

강민수·2021년 12월 19일
0

Day 5

const getPrefix = strs => {
  // 1. 입력받은 배열의 요소들을 순회한다.
  // 2. 반환되는 값을 저장할 변수 선언
  // 3. 순회해서 받은 요소의 

  let prefix = '';

  if (strs[0]) {

    for (let i=0; i < strs[0].length; i++) {
      let sameCount = 0;

      for (let j = 1; j < strs.length; j++) {
        if (strs[0][i] === strs[j][i]) {
          sameCount++;
        }
      }

      if(sameCount === strs.length-1)
        prefix += strs[0][i];

      else break;
    }
  }

  return prefix;

}

접근방법

  1. 빈 문자열을 선언( let prefix )하고 반복문을 돌려서 strs 배열안의 문자열들의 겹치는 알파벳을 순차적으로 prefix에 넣어주고 for문이 다 돌면 prefix 값을 리턴해서 결과값 출력
  2. 첫번째 for문의 i는 strs 배열 안의 문자열 각각의 인덱스(알파벳)을 나타낸다.
  3. 두번째 for문의 j는 strs 배열 안의 각 인덱스(문자열)을 나타낸다. strs의 0번째 인덱스부터 for문에서 돌릴 필요 없이 strs의 0번째 인덱스를 나머지 인덱스와 비교해서 겹치는 값을 찾아내면 되기 때문에 j=1번째 인덱스부터 시작
  4. 첫번째 for문에서 sameCount 변수를 선언 및 초기값을 1로 설정. 해당 변수는 두번째 for문 안에서 두 문자열의 인덱스가 일치하면 +1을 해준다. strs의 0번째 인덱스를 나머지 인덱스들과 비교하는 것이기 때문에 strs 배열안의 모든 문자열에서 해당 인덱스의 알파벳이 일치할 경우 sameCount의 값은 비교대상인 str[0]을 제외한 "strs.length-1"이 됨
  5. if문에서 sameCount의 값과 strs.length-1이 같은 지 비교한다. sameCount의 값과 strs.length-1의 값이 같다는 것은 strs[0]을 strs의 나머지 인덱스들과 비교했을 때 해당 알파벳이 모두 같았다는 말이 되므로 해당 알파벳을 prefix에 넣어준다. for문이 돌아가면서 strs의 인덱스들을 비교, 겹치는 알파벳은 순차적으로 prefix에 들어가므로 for문 종료 후 리턴되는 prefix의 값은 strs배열안의 모든 인덱스들을 비교해서 겹치는 알파벳의 모음이 된다.
  6. if문 밑에 else로 break를 선언해주지 않으면 strs 내 인덱스들의 i번째 알파벳이 겹치지 않아도 prefix에 값이 추가되지 않을 뿐 for문에서 다음 알파벳(i+1)을 비교하게 되기 때문에 겹치지 않는 알파벳이 발생 시 break로 종료시킨다.

느낀 점 ****

월~금요일 동안 매일 한 문제씩 알고리즘 기초 문제들을 풀어보았는데 문제를 읽으면 어떻게 풀어야할 지 감이 오는데 막상 코드로 구현하는 것은 꽤나 힘들다. 코드카타 외에도 매일 한문제씩은 알고리즘 문제를 따로 찾아서 풀어보는 것이 좋을 것 같다. 메소드 잘 사용해서 같은 답안도 코드 줄이는 것은 덤

profile
개발도 예능처럼 재미지게~

0개의 댓글