[프로그래머스] 한 번만 등장하는 문자

Seunghwa's Devlog·2023년 3월 3일
0

Algorithm

목록 보기
6/6
post-thumbnail

문제 설명

문자열 s가 매개변수로 주어집니다. s에서 한 번만 등장하는 문자를 사전 순으로 정렬한 문자열을 return 하도록 solution 함수를 완성해보세요. 한 번만 등장하는 문자가 없을 경우 빈 문자열을 return 합니다.

제한사항

  • 0 < s의 길이 < 1,000
  • s는 소문자로만 이루어져 있습니다.

입출력 예

입출력 예 설명

입출력 예 #1

  • "abcabcadc"에서 하나만 등장하는 문자는 "d"입니다.

입출력 예 #2

  • "abdc"에서 모든 문자가 한 번씩 등장하므로 사전 순으로 정렬한 "abcd"를 return 합니다.

입출력 예 #3

  • "hello"에서 한 번씩 등장한 문자는 "heo"이고 이를 사전 순으로 정렬한 "eho"를 return 합니다.

풀이

function solution(s) {
     let ans = [];
    
    [...s].map((item) => {
        if(s.indexOf(item) === s.lastIndexOf(item)){
            ans.push(item);
        }
    })
    
    return ans.sort().join("");
}

새로운 배열을 생성해주고, 입력받은 문자열을 배열로 변환한다. 배열을 반복문을 사용하여 중복되지 않는 문자만 뽑아서 새로운 배열에 추가하고 사전순으로 정렬한다.

중복되지 않는 문자만 뽑아내는 법

  • indexOf method와 lastIndexOf method를 이용하는데, 중복되지 않는 다는 것은 한 번만 나온다는 말이고 그 말은 곧 왼쪽에서 부터 index를 탐색한 결과와 오른쪽에서 부터 index를 탐색한 결과가 같다는 말로 해석할 수 있다.

indexOf와 lastIndexOf의 차이점

  • fromIndex로부터 역순(오른쪽에서 왼쪽)으로 탐색을 시작하여 searchValue가 처음 탐색되는 index를 반환한다.

  • 하지만 탐색만 역순으로 할 뿐 반환값은 indexOf()와 동일하게 앞쪽부터의 index이다.

profile
에러와 부딪히고 새로운 것을 배우며 성장해가는 과정을 기록합니다!

0개의 댓글