카테고리 없음

한 번만 등장하는 문자 Feat.new Set

stella0905 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인것만 추리면 중복되지 않는 수를 찾을 수 있다. 

 

이거 하는데 아직 객체에 접근하는게 익숙하지 않아서 코드를 짜는데 조금 오래 걸렸다.