[프로그래머스 | Javascript] 코딩테스트 입문 - 한 번만 등장한 문자

박기영·2022년 11월 9일
0

프로그래머스

목록 보기
80/159
post-custom-banner

solution

function solution(s) {    
    const noOverlay = new Set(s);
    
    if(noOverlay.size === s.length){
        return s.split("").sort().join("");
    }
    
    const sArr = s.split("");
    
    for(let i = 0; i < sArr.length; i++){
        if(!s.includes(sArr[i])){
            continue;
        }
        
        if(s.indexOf(sArr[i]) !== s.lastIndexOf(sArr[i])){
            s = s.split(sArr[i]).join("");    
        }
    }
    
    return s.split("").sort().join("");
}

굉장히...꼬아서 푼 것 같다는 느낌이 든다.
우선 중복을 제거한 것의 길이가 원본의 길이와 같으면, 중복되는 문자가 없는 것이므로 그대로 원본을 반환한다.
길이가 다르면 중복이 존재하는 것이므로, 연산을 진행한다.
원본 배열을 특정 문자열로 split()하고 다시 join()한다.
그렇게 중복 문자들을 제거해나가는 방식이다.

그런데...너무 문제를 꼬아서 푼 것 같다.

다른 분 풀이 참고 solution

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

이번에는 포커스를 중복이 되는 문자가 아니라 중복이 아닌 문자에 맞췄다.
코드가 훨씬 간단하고, 이해하기 편해졌다.

profile
나를 믿는 사람들을, 실망시키지 않도록
post-custom-banner

0개의 댓글