programmers-한 번만 등장한 문자
programmers-한 번만 등장한 문자

programmers-한 번만 등장한 문자

Tags
Algorithm
Programmers
Published
March 12, 2024
Author
gozneokhan

•programmers-한 번만 등장한 문자

한 번만 등장한 문자
한 번만 등장한 문자

문제 설명

문자열 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 합니다.

•solution.js

function solution(s) { return [...s].filter(c => s.split(c).length === 2).sort().join(''); } /* 테스트 1 입력값 〉 "abcabcadc" 기댓값 〉 "d" 실행 결과 〉 테스트를 통과하였습니다. 테스트 2 입력값 〉 "abdc" 기댓값 〉 "abcd" 실행 결과 〉 테스트를 통과하였습니다. 테스트 3 입력값 〉 "hello" 기댓값 〉 "eho" 실행 결과 〉 테스트를 통과하였습니다. */

동작 원리

notion image
처음이나 마지막은 +1되서 나

other-solution.js

function solution(s) { return [...s].filter(c => s.match(new RegExp(c, 'g')).length === 1).sort().join(''); } // 정규표현식 s.match()안에 바로 문자열을 넣을 수 없기 떄문에 s.match(new RegExp(c, 'g')).length === 1) 이런식으로 작성

작동 원리

notion image

function solution(s) { let res = []; for (let c of s) if (s.indexOf(c) === s.lastIndexOf(c)) res.push(c); return res.sort().join(''); }
  1. let res = [];: 빈 배열 res를 초기화합니다. 이 배열은 한 번만 나타나는 문자들을 저장할 용도로 사용됩니다.
  1. for (let c of s): 문자열 s를 순회합니다. 각각의 문자를 c로 가져옵니다.
  1. if (s.indexOf(c) === s.lastIndexOf(c)): 현재 문자 c가 문자열 내에서 처음 나타나는 위치(indexOf)와 마지막으로 나타나는 위치(lastIndexOf)가 동일한지 확인합니다. 만약 동일하다면, 해당 문자는 문자열 내에서 한 번만 나타나는 문자입니다.
  1. res.push(c): 한 번만 나타나는 문자라면, 결과 배열 res에 해당 문자를 추가합니다.
  1. return res.sort().join(''): 결과 배열을 정렬하고, 정렬된 배열을 문자열로 변환하여 반환합니다. 따라서 함수는 주어진 문자열에서 한 번만 나타나는 문자들을 알파벳 순으로 정렬된 문자열로 반환합니다.