코딩테스트 문제풀이/inflearn

[인프런] Node.js / 섹션1 - 기본문제 풀이 / 16. 중복문자제거

sangchu 2023. 1. 4. 16:37

문자열에서 중복된 문자를 제거

 

나의 풀이

function solution(s) {
  let answer = "";
  for (let x of s) {
    if (!answer.includes(x)) {
      answer += x;
    }
  }
  return answer;
}

console.log(solution("ksekkset"));

빈 문자열을 만들어, 해당 문자가 없으면 추가하도록 했다.

 

강사 풀이

function solution2(s) {
  let answer = "";
  for (let i = 0; i < s.length; i++) {
    if (s.indexOf(s[i]) === i) {
      answer += s[i];
    }
  }
  return answer;
}

console.log(solution2("ksekkset"));
indexOf(인자, n) :
첫번째 매개변수를 발견한 인덱스 리턴(발견하지 못하면 -1 리턴)
두번째 매개변수는 검색을 시작할 인덱스

만약 해당 문자의 인덱스 번호가 현재 반복문 인덱스와 다르면 이미 해당 문자열 앞에 해당 문자가 존재한다는 뜻이다.

그러므로 같은 인덱스인 것만 answer에 추가해준다.

 

번외: 특정 문자열 개수 찾는 법

function solution3(s) {
  let answer = 0;
  let pos = s.indexOf("k");
  // 해당 인자 못 찾으면 -1 반환
  while (pos !== -1) {
    answer++;
    pos = s.indexOf("k", pos + 1); // pos + 1 : 현재 찾은 인덱스 다음꺼 찾기
  }
  return answer;
}

console.log(solution3("ksekkset"));

특정 문자가 존재한다면(반환 값이 -1이 아니라면) while문을 돈다.