-
한 번만 등장하는 문자 Feat.new Set카테고리 없음 2023. 4. 21. 00:42
문제 설명
문자열 s가 매개변수로 주어집니다. s에서 한 번만 등장하는 문자를 사전 순으로 정렬한 문자열을 return 하도록 solution 함수를 완성해보세요. 한 번만 등장하는 문자가 없을 경우 빈 문자열을 return 합니다.
제한사항
- 0 < s의 길이 < 1,000
- s는 소문자로만 이루어져 있습니다.
입출력 예
s result
"abcabcadc" "d" "abdc" "abcd" "hello" "eho"
입출력 예 설명
입출력 예 #1
- "abcabcadc"에서 하나만 등장하는 문자는 "d"입니다.
입출력 예 #2
- "abdc"에서 모든 문자가 한 번씩 등장하므로 사전 순으로 정렬한 "abcd"를 return 합니다.
입출력 예 #3
- "hello"에서 한 번씩 등장한 문자는 "heo"이고 이를 사전 순으로 정렬한 "eho"를 return 합니다.
function solution(s) { const set = new Set(s) return [...set].sort().join("") } console.log(solution("abcabcadc"))
new set 으로 풀려고 코드를 작성을 하는 중 new Set()을 사용해서 나온 값을 다시 문자열로 바꿔주고 싶으면 (...set)으로 풀어줄 수 는 없고 배열형식으로 풀어준다음에 다시 join("")으로 묶어주는 방법으로 할 수 있다.
이렇게 방법은 다시 알게되었지만 결론적으로는 new Set은 중복된걸 제거하고 한개씩 남기는거다 보니 문제에서 원하는 결과값과는 다른 결과값을 나타낸다.
function solution(s) { const arr = [...s] const count = {} for (let i = 0; i < arr.length; i++) { if (count[arr[i]]) { count[arr[i]]++ } else { count[arr[i]] = 1 } } const result = [] for (let i = 0; i < arr.length; i++) { if (count[arr[i]] === 1) { result.push(arr[i]) } } return result.sort().join("") } console.log(solution("abcabcadc"))
일단 s를 반복문을 돌면서 객체에 중복된 갯수를 적어준다.
나온 객체로 속성값이 1인것만 추리면 중복되지 않는 수를 찾을 수 있다.
이거 하는데 아직 객체에 접근하는게 익숙하지 않아서 코드를 짜는데 조금 오래 걸렸다.