
https://school.programmers.co.kr/learn/courses/30/lessons/120896
function solution(s) {
let result = "";
const charCount = {};
for (const char of s) {
charCount[char] = Object
.keys(charCount)
.includes(char) ? ++charCount[char] : 1;
}
result = Object
.entries((charCount))
.filter(([k, v]) => v === 1)
.map((v) => v[0])
.sort((a, b) => a.charCodeAt(0) - b.charCodeAt(0))
.join("");
return result;
}
✔ charCount 객체에 (key, value)를 (char, count)로 설정
❗ charCodeAt 사용할 필요 없이 바로 sort() 하면 사전 순으로 정렬할 수 있다.
❗ 메서드 사용을 너무 남발해서 코드가 지저분해보인다.
function solution(s) {
let result = [];
const charCount = {};
for (const char of s) {
charCount[char] = Object
.keys(charCount)
.includes(char) ? ++charCount[char] : 1;
}
for (const k in charCount) {
if(charCount[k] === 1) result.push(k);
}
return result.sort().join("");
}
✔ result를 배열로 선언하고, for ... in을 이용하였다. 조금은 코드가 더 보기 좋아진 모습이다.
function solution(s) {
let result = [];
for (const char of s) {
if (s.indexOf(char) === s.lastIndexOf(char)) {
result.push(char);
}
return result.sort().join("");
}
✔ indexOf와 lastIndexOf를 사용해서 같으면 문자가 한 번만 등장한 것이란 것을 활용한 방식이다.
전혀 생각지도 못한 방식이라 처음에 이 코드를 보고 감탄사를 자아냈다. 😲
lastIndexOf의 색다른 활용에 대해 알아가게 되었다.