프로그래머스 PCCP 외톨이알파벳

2023. 12. 8. 10:47기타

https://school.programmers.co.kr/learn/courses/15008/lessons/121683?language=javascript

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

문제설명

 

수도코드

로직구성
 
1.알파벳 배열을 순회한다.
2.순회하면서, 알파벳이 바뀐걸 체크해야한다
3.알파벳이 바뀔떄마다 배열에 넣어주고, 해당배열에 indexOf(el) 했을 , -1 안나온다면 같은 알파벳이 서로 뭉쳐있지 않은 외톨이.
4.외톨이 알파벳을 answer배열에 넣어준다.
5.순회가 끝나면, answer 배열을 알파벳순으로 정렬 후 중복을 제거해주고 출력한다.
5-1. 만일 외톨이가 없다면 N을 출력한다.
 

 

 

풀이코드

function solution(s) {
  
   
  s = [...s];
  let result = [];
  let answer = [];

  s.forEach((el, idx) => {
    if (result.indexOf(el) !== -1) {
      answer.push(el);
    }
    if (idx > 0 && s[idx - 1] !== el) {
      //알파벳이바뀜
      result.push(s[idx - 1]);
    }
  });

  return answer.length ? [...new Set(answer.sort())].join("") : "N";
}

console.log(solution("eeddee"));

 

 

시행착오

이 문제는 시행착오없이 한번에 로직이 떠올라서 쉽게 해결했다.

문제해결의 핵심은 알파벳이 바뀌는걸 체크하고, 바뀌는 알파벳 중 이전에 나온적이 있는 알파벳인지 판별하는게 중요했다.