[algorithm] 문자 찾기

Ho-eng·2023년 4월 8일
0

❓ 문자 찾기


한 개의 문자열을 입력받고, 특정 문자를 입력받아 해당 특정문자가 입력받은 문자열에 몇 개 존재하는지 알아내는 프로그램을 작성하세요.
문자열의 길이는 100을 넘지 않습니다.

  • 입력설명

    첫 줄에 문자열이 주어지고, 두 번째 줄에 문자가 주어진다.

  • 출력설명

    첫 줄에 해당 문자의 개수를 출력한다.

  • 입력예제 1

    COMPUTERPROGRAMMING
    R

  • 출력예제 1

    3


❗ 문제 풀이

내 풀이

<html>
  <head>
    <meta charset="UTF-8" />
    <title>출력결과</title>
  </head>
  <body>
    <script>
      function solution(str1, str2) {
        let arr = []
        let arrStr1 = str1.split("")

        arrStr1.forEach((item) => {
          if (item === str2) {
            arr.push(item)
          }
        })

        return arr.length
      }
      let str1 = "COMPUTERPROGRAMMING"
      let str2 = "R"
      console.log(solution(str1, str2))
    </script>
  </body>
</html>
  1. arr이라는 빈배열과, 비교해야할 str1을 한글자씩 쪼개서 배열로 넣어둔 arrStr1을 선언한다.
  2. 순환을 돌면서 arrStr1[i] === str2 가 참인 경우, 빈 배열(arr)에 arrStr1[i]를 넣는다.
  3. arr.length를 return한다.

정답 소스

<html>
    <head>
        <meta charset="UTF-8">
        <title>출력결과</title>
    </head>
    <body>
        <script>
            function solution(s, t){
                let answer=s.split(t).length;
                return answer-1;
            }
            
            let str="COMPUTERPROGRAMMING";
            console.log(solution(str, 'R'));
        </script>
    </body>
</html>
  1. 'COMPUTERPROGRAMMING'.split('R')을 answer라는 변수에 할당한다.
  2. answer -1 을 return한다

왜 answer -1 인가?

'COMPUTERPROGRAMMING'.split('R') = ['R을 제거한 후의 문자열', ' ' , ' ' ,' ' ] .
즉, 출력되는 건 [자른문자열, 제거한 횟수] 를 출력하게 된다.
내가 필요한건, 총 몇번 제거했는지 이므로 자른문자열의 갯수인 1을 빼주면 총 제거한 횟수가 출력 된다.

profile
매일 '어제의 나와 오늘의 나는 무엇이 다를까?'를 고민하는 김호엥입니다.

0개의 댓글