[JS/자바스크립트] 프로그래머스 - 한 번만 등록한 문자

강지훈·2023년 2월 13일
0

알고리즘

목록 보기
3/4

문제

한 번만 등장한 문자

문자열 `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 변환
}

프로그래머스 다른문제 풀이 최상단을 보면 항상 기상천외한 풀이가 있다.
정답만 통과하는게 아니라 효율적으로 풀도록 노력해야겠다.

profile
우당탕탕 개발자

0개의 댓글