2021/12/19) 16. 중복문자제거

굥굥이·2021년 12월 20일
0
post-thumbnail

1. 문제

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

2. 해결 방법

  1. for문으로 인덱스번호를 돌린다.
  2. 아래의 사진은 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

  • 원하는 항목이 몇 번째 원소인지 찾아주는 함수이다.
  • 첫 번째 파라미터에 값을 넣어주고, 두 번째 파라미터에 몇 번째 인덱스부터 검사를 할 것인지 인덱스 번호를 넣어주면 되는데, 생략해도 된다.

3. 정답

        <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>

4. 내 코드와 비교 그리고 반성

맥주 한 잔 하면서 해서 정신이 없었다. 술 금지.

profile
아자아자 파이띵굥!

0개의 댓글