<중복문자제거>
: 소문자로 된 한 개의 문자열이 입력되면 중복된 문자를 제거하고 출력하는 프로그램을 작성하세요. 제거된 문자열의 각 문자는 원래 문자열의 순서를 유지한다.
- for문으로 인덱스번호를 돌린다.
- 아래의 사진은 for문 안에서, console.log(s[i], i, s.indexOf(s[i])); 한 상태이다.
indexOf를 하면, 최초(처음)문자의 인덱스가 출력된다는 것을 확인할 수 있는데, 이를 이용하여 코드를 짜도록 한다. 처음문자인덱스와 현재인덱스를 비교!!!
ex ) k로 예시를 들면, 0(현재)/3(현재)/4(현재) 중 0(최초)만을 반환하기 때문에, 0 === 0일 때만 값이 누적되도록 하면, 중복된 문자를 제거할 수도 있고 순서도 유지할 수 있다.
! 추가 추가
-> indexOf()로 문자열 찾기. + while문
- indexOf는 만약 원하는 값을 찾지 못하면 -1을 반환한다.
그렇기 때문에 while문의 조건으로 (pos !== -1)을 하면, -1(찾지 못할 때까지)이 될 때까지 돌아간다. 그리하여 indexOf의 두 번째 파라미터에 1씩 증가시켜, 계속 찾도록 하면 된다.
! 플러스 개념
-> indexOf
- 원하는 항목이 몇 번째 원소인지 찾아주는 함수이다.
- 첫 번째 파라미터에 값을 넣어주고, 두 번째 파라미터에 몇 번째 인덱스부터 검사를 할 것인지 인덱스 번호를 넣어주면 되는데, 생략해도 된다.
<script> //중복 문자 제거 function solution(s){ let answer=""; //console.log(s.indexOf("K")); //-1 반환되는 거 확인 for(let i=0; i<s.length; i++){ //console.log(s[i], i, s.indexOf(s[i])); if(s.indexOf(s[i])===i) answer+=s[i]; } return answer; } console.log(solution("ksekkset")); </script>
<script> //문자열 개수 찾기 function solution(s){ let answer=0; let pos = s.indexOf('k'); while(pos !== -1){ answer ++; pos = s.indexOf('k',pos+1); } return answer; } console.log(solution("ksekkset")); </script>
맥주 한 잔 하면서 해서 정신이 없었다. 술 금지.