프로그래머스 - 한 번만 등장한 문자

Lellow_Mellow·2023년 4월 11일
1
post-thumbnail

⭐ Lv. 0 - 한 번만 등장한 문자

✅ 문제 설명

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


✅ 제한사항

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

✅ 입출력 예

입출력 예 #1

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

입출력 예 #2

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

입출력 예 #3

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

✅ 풀이 코드 + 설명

문자열을 탐색하며 각 문자의 개수를 객체 형태로 저장하여 이를 기준으로 한 번만 등장하는 문자를 구분하였습니다.

이미 객체 내부에 해당 문자가 key로 존재할 경우, 해당 key값에 대한 value를 증가시키며, 없을 경우에는 새롭게 keyvalue를 추가해줍니다.

function solution(s) {
    const counter = {};
    let result = [];
    
    [...s].forEach((cur) => {
        if(cur in counter) counter[cur]++;
        else counter[cur] = 1;
    })
    
    for(cur in counter) {
        if(counter[cur] === 1) result.push(cur);
    }
    
    return result.sort().join("");
}

해당 풀이도 정상적으로 정답으로 인정되지만, lastIndexOf method를 활용한 풀이를 발견하였습니다.

function solution(s) {
    let result = [];
    
    [...s].forEach((cur) => {
        if(s.indexOf(cur) === s.lastIndexOf(cur)) result.push(cur); 
    })
    
    return result.sort().join("");
}

indexOf는 배열에서 전달받은 인자와 동일한 첫 index를 return하지만, lastIndexOf는 배열에서 전달받은 인자와 동일한 가장 마지막 index를 return합니다. 이 둘이 같은 경우는 해당 배열에 오직 하나만 존재한다는 의미가 되므로, 해당 경우를 result 배열에 저장하여 이를 결과값으로 출력합니다.


profile
잔잔한 물결에서 파도로, 도약을 위한 도전. 함께하는 성장

0개의 댓글