⌨️ 프로그래머스/코딩테스트 입문

[프로그래머스] 한 번만 등장한 문자 | JS

하나둘세현 2024. 9. 4. 14:22
728x90

문제

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

해결 과정

문자를 사전순으로 정렬했다고 하니까 오름차순으로 정렬을 해야겠다고 생각했다.

function solution(s) {
    var answer = '';
    let sSort = s.split('').sort();
    let emptyString = [];
    for(let i = 0; i < sSort.length; i++) {
        let isDuplicate = false;
        
       for(let j = 0; j < sSort.length; j++) {
           if(i!==j && sSort[i] == sSort[j]) {
               isDuplicate = true;
               break;
           }
           
          
           }
           if(!isDuplicate) {
               answer+=sSort[i]; 
       }
    }
    return answer;
}

 

문제를 보고 이중for문을 이용하여 중복된 문자를 제외하고 중복되지 않은 문자를 추가하는 방향으로 생각을 했다.

let sSort = s.split('').sort(); 는 문자열을 배열로 고치고 오름차순으로 변수를 만들었다.

for문을 이용해 중복 여부를 판단할 때는 for문 내부에 (ex)let isDuplicate=false로 작성해야한다. 

두번째 for문에서는 isDuplicate가 true일때 break; 를 해 for문을 끝냈다. 

아 그리고 i !== j 를 작성한 이유는 자기 자신과의 비교를 피하기 위함이다.

새롭게 알게된 점

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