한 번만 등장한 문자
문자열 `s`가 매개변수로 주어집니다.
`s`에서 한 번만 등장하는 문자를 사전 순으로 정렬한 문자열을 return 하도록
solution 함수를 완성해보세요.
한 번만 등장하는 문자가 없을 경우 빈 문자열을 return 합니다.
function solution(s) {
let answer = ''
let arr = s.split('').sort() // 문자열을 배열로 바꿔서 알파벳 순으로 정렬
for(let i = 0; i<arr.length; i++) {
if(arr[i] != arr[i+1] && arr[i] != arr[i-1]) {
answer = answer + String(arr[i]) }
// 앞뒤로 같은 문자가 없을 경우에 answer에 String 변환하여 담기
}
return answer
}
for문 하나썼는데 풀이 시간이 굉장히 길다. 다른 사람의 풀이를 살펴보자
// 처음에 보고 이게 뭔 소리지? 생각이 들었다.
// 이 풀이를 사용하니 3.24ms 걸리던 테스트 1번이 0.08ms로 줄었다.
function solution(s) {
let res = [];
for (let c of s)
if (s.indexOf(c) === s.lastIndexOf(c)) res.push(c);
// indexOf는 중복된 값이 있어도 가장 첫 index 번호를 가져온다.
// lastIndexOf는 중복된 값이 있을 경우 가장 마지막 index 번호를 가져온다.
// 그러므로 indexOf === lastIndexOf 일 경우는 중복된 값이 없다는 소리
return res.sort().join('');
// 중복되지 않은 값만 배열에 담아서 string 변환
}
프로그래머스 다른문제 풀이 최상단을 보면 항상 기상천외한 풀이가 있다.
정답만 통과하는게 아니라 효율적으로 풀도록 노력해야겠다.