문제
입력된 문자열의 중복을 제거하여 리턴하세요. 제거된 문자열의 순서는 원래 순서를 유지합니다.
풀이 1 (indexOf 사용)
function solution(s){
let answer = '';
for(let i = 0; i < s.length; i++) {
if(s.indexOf(s[i])===i) answer += s[i];
}
return answer;
}
solution("ksekkset"); //kset;
s.indexOf('a')
: s문자열에서 'a'의 위치를 반환한다. 없다면 -1을 반환한다.s.indexOf('a',1)
: s문자열에서 'a'를 1번째 인덱스 부터 찾는다. (그 이전의 인덱스는 무시한다.)if(s.indexOf(s[i])===i)
: indexOf는 찾고있는 문자의 첫번째 위치를 반환한다. i가 누적될때마다 찍히는 indexOf의 값은, s[i]가 중복값이면 i의 값과 다르다. 따라서 i와 같은 값을 answer에 누적시킨다.
풀이 2 (Set 사용)
function solution(s){
let set = [...new Set(s)];
let answer = set.join('');
return answer;
}
solution("ksekkset"); //kset;
Set
: 자료형에 관계 없이 포함된 값이 set 콜렉션 내에서 "유일" 하다. (= 중복이 없다.) 문자열 s를 set 객체로 만들어 중복을 제거했다.let set = [...new Set(s)];
: set 객체를 배열로 얻기 위해 전개 연산자(...)를 사용했다. 전개 연산자는 반복 가능한 객체를 하나씩 펼쳐서 리턴한다.set.join('');
: 배열 요소를 공백없이 붙이기 위해서 join을 사용했다.
참고자료
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Set
https://hianna.tistory.com/421
틀린내용 지적 및 개선사항 환영합니다!!!
'Algorithm & 자료구조 > (인프런) 자바스크립트 알고리즘 문제풀이' 카테고리의 다른 글
[알고리즘] 배열 등수 구하기 (Array.from) (0) | 2022.01.29 |
---|---|
[알고리즘]중복 단어 제거 - 배열의 중복 제거 (filter, indexOf) (0) | 2022.01.27 |
[알고리즘]대문자로 통일 (0) | 2022.01.25 |
[알고리즘]문자 찾기 - 문자열에 특정 문자가 몇 개 있는지?(split) (0) | 2022.01.25 |
[알고리즘] A를 #으로 - 특정 문자열 치환 (replaceAll) (0) | 2022.01.25 |