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

Hyoyoung Kim·2023년 5월 29일
0

프로그래머스 레벨0

목록 보기
21/28

2. 한번만 등장한 문자

https://school.programmers.co.kr/learn/courses/30/lessons/120896

문제 설명

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

입출력 예시

내 코드 _ 방법 1

function solution(s) {
    let arr= s.split('');
    let answer=[];
    for(let i=0; i<s.length;i++){
        if(!answer.includes(arr[i])) answer.push(arr[i])
    }
    var array = new Array(answer.length);
    array.fill(0)
    for(let j=0; j<answer.length; j++){
        for(let i=0; i<s.length;i++){
            if(answer[j]===arr[i]) array[j]++
        }
    }
    let array2= []
    for(let x=0; x<array.length; x++){
        if(array[x]===1) array2.push(answer[x])
    }
    return array2.sort().join('');
}

console.log(solution("abcabcadc"));
console.log(solution("abdc"));
console.log(solution("hello"));

코드 풀이

function solution(s) {
//1. s를 배열화해서 arr에 넣어준다.
    let arr= s.split('');
    let answer=[];
//2. answer에 arr[i] 인덱스가 존재하지 않으면 answer에 arr[i]를 넣어준다.
    for(let i=0; i<s.length;i++){
        if(!answer.includes(arr[i])) answer.push(arr[i])
// anwser => [a,b,c,d]
    }
//3. answer의 길이만큼의 배열을 만들어 준다.
    var array = new Array(answer.length); 
//4. array의 배열을 0으로 채워준다 [0,0,0,0].
    array.fill(0); 
    for(let j=0; j<answer.length; j++){
        for(let i=0; i<s.length;i++){
//5. answer[j]===arr[i]라면 array[j]번째 인덱스에 1을 더해준다.
            if(answer[j]===arr[i]) array[j]++
        }
    }
    let array2= []
    for(let x=0; x<array.length; x++){
//6. array[x]의 값이 1이면 array2에 answer[x]를 넣어준다. 
        if(array[x]===1) array2.push(answer[x])
    }
//7. 문자배열을 순서대로 정렬하고 문자열로 만들어준다. 
    return array2.sort().join('');
}

console.log(solution("abcabcadc")); //'d'

내 코드 _ 방법 2

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

console.log(solution("abcabcadc"));
console.log(solution("abdc"));
console.log(solution("hello"));

코드 풀이

// lastIndexOf = 문자열에서 탐색하는 문자열이 마지막으로 등장하는 위치에 대한 index를 반환
// var stringName = 'coding everybody everywhere';
// console.log(stringName.indexOf('every')); //7
// console.log(stringName.lastIndexOf('every')); //17
function solution(s) {
    let res = [];
//s 문자열을 순회하여 s열에서 c가 제일 먼저 시작하는 인덱스랑
// 마지막으로 시작하는 인덱스가 같다는 것은 s열에 c가 하나밖에 없다는 소리이니
// res배열에 넣어준다. 
    for (let c of s) if (s.indexOf(c) === s.lastIndexOf(c)) res.push(c);
    return res.sort().join('');
}

console.log(solution("abcabcadc"));
console.log(solution("abdc"));
console.log(solution("hello"));

0개의 댓글