1-16) 중복문자제거

김예지·2021년 8월 25일
0

문제

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

입력예제 1

ksekkset

출력예제 1

kset


문제 풀이

예습 이론

  • s.indexOf('k')=0 : (s="ksekkset"이라고 가정)'k'문자가 '처음'으로 발견되는 인덱스를 리턴한다.
  • s.indexOf('k', 1)=3: 1번째 인덱스이후 'k'문자가 있는 인덱스
  • s.indexOf(문자)=-1이면, 문자를 문자열에서 발견하지 못한 경우이다. 즉 문자가 문자열에 없을 때 -1을 리턴한다.

코드

indexOf(문자)메소드는 처음으로 문자가 발견되는 인덱스이기 때문에, 이후에 같은 문자가 발견되더라도 처음 그 문자가 발견된 인덱스를 리턴한다.

<html>
    <head>
        <meta charset="UTF-8">
        <title>출력결과</title>
    </head>
    <body>
        <script>
            function solution(s){  
                let answer="";
                //console.log(s.indexOf("k")); 0
                //console.log(s.indexOf("k", 1)); 3
                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]; //처음발견된 것만 answer에 추가
                }
                return answer;
            }
            console.log(solution("ksekkset"));
        </script>
    </body>
</html>

결과

kset


추가문제-특정문자가 문자열 내에서 몇개있는지 카운팅

코드

<!--추가: 특정문자('k')가 몇개 있는지 카운팅하기-->
<html>
    <head>
        <meta charset="UTF-8">
        <title>출력결과</title>
    </head>
    <body>
        <script>
            function solution(s){  
                let answer=0; //카운팅
                let pos=s.indexOf('k'); //초기 pos값은 0(0번째 인덱스에 k있음)
                while(pos!==-1){
                answer++;
                pos=s.indexOf('k', pos+1);
            }     
            return answer;
        }
        console.log(solution("ksekkset"));
        </script>
    </body>
</html>

결과

3

profile
내가 짱이다 😎 매일 조금씩 성장하기🌱

2개의 댓글

comment-user-thumbnail
2021년 9월 11일

9/10

답글 달기
comment-user-thumbnail
2022년 11월 24일

11/24

Set 객체 활용 (중복 제거 -> Set 바로 떠올리기!)

function solution(str) {
  return Array.from(new Set(str)).join('');
}

solution('ksekkset');
답글 달기