[프로그래머스] 한 번만 등장하는 문자
본문 바로가기
코딩 테스트 연습/Programmers

[프로그래머스] 한 번만 등장하는 문자

by 은돌1113 2023. 7. 12.

문제 설명

문자열 s가 매개변수로 주어집니다. s에서 한 번만 등장하는 문자를 사전 순으로 정렬한 문자열을 return 하도록 solution 함수를 완성해보세요. 한 번만 등장하는 문자가 없을 경우 빈 문자열을 return 합니다.


제한사항

  • 0 < s의 길이 < 1,000
  • s는 소문자로만 이루어져 있습니다.

입출력 예

"abcabcadc" "d"
"abdc" "abcd"
"hello" "eho"

입출력 예 설명

 

입출력 예 #1

  • "abcabcadc"에서 하나만 등장하는 문자는 "d"입니다.

입출력 예 #2

  • "abdc"에서 모든 문자가 한 번씩 등장하므로 사전 순으로 정렬한 "abcd"를 return 합니다.

입출력 예 #3

  • "hello"에서 한 번씩 등장한 문자는 "heo"이고 이를 사전 순으로 정렬한 "eho"를 return 합니다.

문제풀이

function solution(s) {
  var answer = "";

  let result = {};
  // 1. 문자열을 하나씩 잘라서 배열로 만든다.
  const arr = s.split("");

  // 2. 각 key(단어)마다 몇 개인 지 계산한다.
  for (let i = 0; i < arr.length; i++) {
    // - result에 해당 key 값이 있다면 value를 1씩 증가시킨다.
    if (Object.keys(result).includes(arr[i])) {
      result[arr[i]]++;
    }
    // - result에 해당 key 값이 없다면 key와 value = 1을 추가한다.
    else {
      result[arr[i]] = 1;
    }
  }

  // 3. 각 key(단어) 중 value(개수)가 1인 단어만 반환한다.
  answer = Object.keys(result)
    .filter((item, i) => {
      if (result[item] === 1) {
        return item;
      }
    })
    // 정렬
    .sort()
    // 배열을 문자열로 변환
    .join("");

  return answer;
}

console.log(solution("abcabcadc"));
console.log(solution("abdc"));
console.log(solution("hello"));

댓글