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() 안에 값에 해당하는 것을 조건 달아주면 된다.
'IT > Algorithm' 카테고리의 다른 글
[Algorithm] 몰랐던 정보 (for문) (0) | 2023.08.11 |
---|---|
[Algorithm] 최대공약수 구하는 법 (gcd) (0) | 2023.08.03 |
알고리즘 (lv.0) 풀면서 배운 표현들 (0) | 2023.06.10 |
원소들의 곱과 합 (lv.0) (0) | 2023.06.08 |
flag에 따라 다른 값 반환하기 (lv.0) (0) | 2023.06.08 |