프로그래머스 압축 자바스크립트

버건디·2023년 10월 4일
0

프로그래머스

목록 보기
64/66
post-thumbnail

문제 링크

- 내 풀이

function solution(msg) {
  const answer = [];

  let alphabetMap = new Map();

  Array.from({ length: 26 }, (_, index) => {
    let str = String.fromCharCode(index + 65);

    alphabetMap.set(str, index + 1);
  });

  let str = "";

  for (let i = 0; i < msg.length; i++) {
    str += msg[i];

    // 만약 알파벳 Map 객체가 해당 문자 + 다음 문자열을 포함하고 있지 않다면
    if (alphabetMap.get(str) && !alphabetMap.get(str + msg[i + 1])) {
      answer.push(alphabetMap.get(str));

      alphabetMap.set(str + msg[i + 1], alphabetMap.size + 1);

      str = "";
    }
  }

  return answer;
}

Map을 활용해서 풀이했다.

  1. 먼저 알파벳들을 담을 Map 객체를 만들어 준 후, 각 index+1 값을 색인 번호로 넣어준다.

  2. 해당 문자열의 반복문을 돌면서 만약 해당 문자열 + 다음 문자열이 Map 객체에 존재하지 않는다면, 무조건 단 한개의 문자열은 알파벳이라 Map객체에 있을것이니, 그 값을 answer 배열에 넣어주 고 알파벳 Map 에 해당 문자열 + 다음 문자열의 색인 번호를 추가해준다.

하지만 이렇게 풀이하면, 맨 마지막에 무조건 undefined 값이 나오는데, 마지막 값은 어차피 포함을 안시키므로 상관이 없다.

profile
https://brgndy.me/ 로 옮기는 중입니다 :)

0개의 댓글

관련 채용 정보