프로그래머스 0단계 '한 번만 등장한 문자'
function solution(s) {
// s가 'hello'라면
// 주어진 문자를 set을 사용해 중복이 없는 배열로 만든다.
let set = new Set([...s]); // [h,e,l,o]
// set에 있는 각 요소가 몇 번씩 나왔는지 횟수를 cnt 배열에 저장
let cnt = [];
set.forEach((i) => {
cnt.push([...s].filter((num) => num === i).length);
});
// cnt = [1,1,2,1]
// cnt에서 값이 1인 요소의 index로 set에서 찾아 oneStr에 push
let oneStr = [];
for (let i = 0; i < cnt.length; i++) {
if (cnt[i] === 1) oneStr.push(Array.from(set)[i]);
}
// 정렬하고 문자열로 만들면 끝!
return oneStr.sort().join("");
}
문자열.lastIndexOf(값)
: 주어진 값과 일치하는 부분을 문자열에서 역순으로 탐색하여, 최초로 마주치는 인덱스를 반환한다.function solution(s) {
let res = [];
// s문자열을 돌면서 c에 해당하는 인덱스와 뒤에서부터 c에 해당하는 인덱스를 찾는다.
// c문자열이 하나밖에 없으면 s.indexOf(c)와 s.lastIndexOf(c)가 같을 것이다.
// 같다면 res에 push하고 정렬해서 join하면 끝
for (let c of s) if (s.indexOf(c) === s.lastIndexOf(c)) res.push(c);
return res.sort().join("");
}