ABOUT ME

개발공부를 시작하면서 서툰 공부일지를 써보는 그런 공간

Today
Yesterday
Total
  • 한 번만 등장하는 문자 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인것만 추리면 중복되지 않는 수를 찾을 수 있다. 

     

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

Designed by Tistory.