
<html>
<head>
<meta charset="UTF-8">
<title>출력결과</title>
</head>
<body>
<script>
function solution(s){
let blank =[...s]; //스프레드 연산자로 문자열->배열로 !
//console.log(blank) --> ['k', 's', 'e', 'k', 'k', 's', 'e', 't']
for(let i=0; i<s.length; i++){
for(let j=i+1; j<s.length; j++){
if(blank[i] == blank[j]){
console.log(blank[i]);
console.log(blank[j]);
blank.splice(j,1); //요소 삭제 후에는 순서가 업데이트 안되면 무한 반복..
console.log(i,j);
console.log(blank); //1차 풀이 실패
//2차 풀이 실패
}
}
}
return answer;
}
//1차 풀이 실패 --> 구글링으로 다른 배열 만들지 않고 한 배열 안에서 중복찾는 방법으로 선회
console.log(solution("ksekkset"));
</script>
</body>
</html>
- 배열 요소 삭제를 위해 스프레드 연산자로 문자열을 배열로 바꿈
- 이중 반복문을 통해 배열 요소 비교를 통해 중복 문자를 찾으려고 함.
- 배열의 splice()메소드를 활용해서 중복 문자를 제거하려고 했는데 첫번째 중복문자와 두번째 중복문자가 붙어있을 때 생략하고 넘어가버림 --> splice메소드가 배열 요소를 삭제하면 바로 배열의 순서가 땡겨지기 때문.
- 그렇다고 중복 문자열을 제거한 후에 j--를 이용하면 무한 루프 생성.
- 풀이 실패! --> 아닌 것 같으면 아예 다른 방식으로 접근하는 게 필요하다고 생각, 계속 매달려봤자 답이 안나온다..
indexOf를 활용한 풀이
<html>
<head>
<meta charset="UTF-8">
<title>출력결과</title>
</head>
<body>
<script>
function solution(s){
let answer = '';
for(let i=0; i<s.length; i++){
//console.log(s[i]);
//console.log(s.indexOf(s[i]))
if(s.indexOf(s[i])===i){
answer += s[i];
}
}
return answer;
}
//1차 풀이 실패 --> 구글링으로 다른 배열 만들지 않고 한 배열 안에서 중복찾는 방법으로 선회
console.log(solution("ksekkset"));
</script>
</body>
</html>
indexOf는 String의 메소드인데 자세한 것은 아래 사이트를 참고!
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/String/indexOf
String.prototype.indexOf() - JavaScript | MDN
indexOf() 메서드는 호출한 String 객체에서 주어진 값과 일치하는 첫 번째 인덱스를 반환합니다. 일치하는 값이 없으면 -1을 반환합니다.
developer.mozilla.org
- 반복문을 활용해서 중복되는 문장을 더 수월하게 찾을 수 있었다.
- 반복문의 변수 i와 indexOf를 통해 문자의 첫번째 위치가 나오는 인덱스가 일치하는 지 여부를 확인해서 일치하면 출력값에 한 개씩 추가키는 방식으로 해결.
'코딩테스트 by JS' 카테고리의 다른 글
<JavaScript> 문자열 내 개수 비교 (0) | 2023.03.17 |
---|---|
JavaScript <자릿수더하기> (0) | 2023.03.16 |
JavaScript<중복단어제거> (0) | 2023.03.15 |
JavaScript <대문자찾기> (0) | 2023.03.12 |
JavaScript <일곱난쟁이> (1) | 2023.03.12 |