알고리즘

[JS] 알고리즘 기초 정복 16번 - 중복문자제거

햄❤️ 2021. 7. 9. 21:03
반응형

문제 16번

소문자로 된 한개의 문자열이 입력되면 중복된 문자를 제거하고 출력하는 프로그램을 작성하 세요. 제거된 문자열의 각 문자는 원래 문자열의 순서를 유지합니다.

 

🍄 입력설명

첫 줄에 문자열이 입력됩니다.

 

🍄 출력설명

첫 줄에 중복문자가 제거된 문자열을 출력합니다.

 

🍄 입력예제 1

ksekkset

 

🍄 출력예제 1

kset

 


정답 코드

 

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

let s = "ksekkset";
console.log(solution(s)); //kset 출력

 

indexOf(요소) 는 지정된 요소를 찾을 수 있는 첫번째 인덱스를 반환하고, 존재하지 않으면 -1을 반환한다.

console.log(s[i], i, s.indexOf(s[i]));

i와 s.indexOf(s[i]) 가 같은 경우가 해당 알파벳이 처음 나오는 위치!
따라서 같은 경우의 s[i]를 answer에 추가해주면 된다.  

 

이렇게 풀어도 되는지는 모르겠다. 집합을 이용해 풀었다. 

function solution(s) {
	let set = new Set(s); //집합
	let arr = [...set];
	let answer = arr.join("");
	return answer;
}

let s = "ksekkset";
console.log(solution(s)); //kset 출력

 

728x90
반응형