자료구조 및 알고리즘/JavaScript Practice

JS Practice) 프로그래머스 : 한 번만 등장한 문자

Ryomi 2023. 3. 22. 09:32
728x90
반응형

 

 

한 번만 등장한 문자

문제설명

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

 

제한 사항

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

 

입출력 예

s result
"abcabcadc" "d"
"abdc" "abcd"

 

첫번째 접근

:  s를 split으로 쪼갠 후, 배열에 반복문들 돌려 각 요소에 arr.indexOf()와 arr.lastIndexOf()를 사용한 값이 같으면 한 번만 등장한 문자이므로 이들을 합쳐 반환할 수 있다.

function solution(s) {
    let order = s.split('').sort();
    let str = '';
    
    for(let i=0; i<order.length; i++){
        if(order.indexOf(order[i]) === order.lastIndexOf(order[i])){
            str += order[i]
        }
    }

    return str
}

 

 

두 번째 접근

: 매번 느끼지만, 난 for 문의 노예이다. 그래서 반복문을 사용하지 않고 해결할 수 있는 방법이 없을까 생각해 보았다. 음.. for 대신 forEach를 사용해 볼 수 있을 것 같다.

function solution(s) {
    let order = s.split('').sort();
    let str = '';
    
    order.forEach(el => order.indexOf(el) === order.lastIndexOf(el) ? str += el : str)

    return str
}

 

 

solution

function solution(s) {
    let res = [];
    for (let c of s) if (s.indexOf(c) === s.lastIndexOf(c)) res.push(c);
    return res.sort().join('');
}

 

728x90
반응형