티스토리 뷰
https://school.programmers.co.kr/learn/courses/30/lessons/120896
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
function solution(s) {
const words = {}
for(let i of s) {
if(!words[i]) {
words[i] = 1
} else {
words[i] = words[i] + 1
}
}
const once = Object.entries(words).map(word => {
if(word[1] === 1) return word[0]
})
return once.sort().join('')
}
- s가 몇 번 들어갔는지 체크할 words 객체 생성
- s 문자열을 모두 순회
- words에 해당 문자열이 없을 경우, 최초 등장한 것이므로 1 담음
- words에 해당 문자열이 있을 경우, 이미 등장했던 것이므로 기존 숫자에 +1
- words 안의 key와 value를 배열로 만들어 map()으로 순회
- value(1번째 인덱스)가 1이면 key(0번째 인덱스)를 return
- 3번에서 반환된 새로운 배열(once)을 sort()로 정렬 후 join('')으로 결합하여 문자열 반환

인상 깊었던 다른 사람의 풀이
* indexOf : 앞에서부터 찾아서 주어진 요소가 존재할 경우 해당 인덱스 반환
* lastIndexOf: 뒤에서부터 찾아서 주어진 요소가 존재할 경우 해당 인덱스 반환
function solution(s) {
const result = []
for(let a of s) {
if(s.indexOf(a) === s.lastIndexOf(a)) {
result.push(a)
}
}
return result.sort().join('')
}
- result 배열 생성
- s 문자열을 모두 순회
- 첫번째 요소를 반환하는 indexOf와 마지막 요소를 반환하는 lastIndexOf가 같다면
s 문자열 내에 해당 요소가 유일하다는 뜻 => result에 push
- 첫번째 요소를 반환하는 indexOf와 마지막 요소를 반환하는 lastIndexOf가 같다면
- result를 sort()로 정렬 후 join('')으로 결합하여 문자열 반환

'알고리즘 문제풀이 > 프로그래머스' 카테고리의 다른 글
| [프로그래머스] Lv.0 - 아이스 아메리카노 (javascript) (0) | 2022.12.31 |
|---|---|
| [프로그래머스] Lv.0 - 짝수는 싫어요 (javascript) (0) | 2022.12.30 |
| [프로그래머스] Lv.0 - 짝수 홀수 개수 (javascript) (2) | 2022.12.28 |
| [프로그래머스] Lv.0 - 배열 두 배 만들기 (javascript) (0) | 2022.12.27 |
| [프로그래머스] Lv.0 - 분수의 덧셈 (javascript) (0) | 2022.12.26 |
댓글
