IT/Algorithm
[Algorithm] 한 번만 등장한 문자(lv.0)
HJ::
2023. 8. 3. 23:33
object를 이용한 문제 풀이
https://school.programmers.co.kr/learn/courses/30/lessons/120896
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제: 문자열 s가 매개변수로 주어집니다. s에서 한 번만 등장하는 문자를 사전 순으로 정렬한 문자열을 return 하도록 solution 함수를 완성해보세요. 한 번만 등장하는 문자가 없을 경우 빈 문자열을 return 합니다.
- s매개변수로 문자열이 들어오고 여기서 한번만 나오는 문자열을
뽑아서 a-z순으로 정렬해서 return 해줘야 한다.
단, 조건의 내용이 없을 시 빈 배열을 return.
내가 푼 풀이
function solution(s) {
let obj= {};
for(let alphabet of [...s]){
!obj[alphabet] ? obj[alphabet]= 1 : obj[alphabet]++;
}
const keysOfObj = Object.keys(obj);
const key = keysOfObj.filter((key) => obj[key] === 1);
return key === null ? [] : key.sort().join("")
}
1) object에 키에는 해당 알파벳을 넣어준다. 그리고 값에는 해당 키와 값이 비어 있을때 1을 할당 해준다.
비어 있지 않다면 기존값에 +1을 더해준다.
2) 해당 key를 배열로 뽑아준다. 해당 키에 해당하는 값이 1 일 때, 즉, 1개밖에 없는 유일한 원소들을 배열로 모아준다.
그 배열이 비어있으면 [] 빈 배열을 리턴해주고 아니면 알파벳을 정렬해서 이어준 문자열을 리턴해준다.
알게된 점.
객체안에 원하는 조건의 원소를 꺼내고 싶을 때는 일단, 키를 담은 배열을 빼내고,
배열.filter() 안에 값에 해당하는 것을 조건 달아주면 된다.