ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [JS] 구름 : 단어 개수 세기
    코딩테스트/구름 2024. 6. 25. 10:53

    문제 <- click 이 될 까?해결 방향 ( 다양하게 접근)

     

    해결 방향 (다양하게 접근)

    1. 대소문자 상관없이 공백을 기준으로 문자열이 주어지고 문자열 안의 단어의 개수를 세는 것이다. 

    2. 공백의 개수 + 1 만큼 단어의 수가 있으니 공백이 몇개인지 찾고자 하였다.

     

    의도 ( 분석, 궁극적으로 해결하고자 하는 문제가 무엇인지 정의)

    1. 문제의 의도는 공백을 찾는 것이다. 

     

    설계 (이 문제를 어떻게 해결할 것인가?)

    1. 공백을 포함한 문자열의 길이만큼 반복해준다. 하지만 (공백)a(공백)b(공백) 라면? -> 예외처리 앞 뒤 공백을 없애주는 함수를 사용하자. (우선, 앞뒤 공백이 없다고 생각하고 풀었었다.)

    2. 만약 인덱스 i 번째가 공백이라면 cnt 변수에 1씩 증가. 

    3. 단어의 개수 = 공백 + 1 이므로 cnt + 1 하여 출력

     

    구현( 컴퓨터가 구현할 수 있는 가?)

    let foo = "goo r m e du";
    
    for (let i=0; i < foo.length; i++){
        if(foo[i] === ' '){
            cnt = 0;
            cnt ++;
        }	
    }
    console.log(cnt + 1);  // 2
    let foo = "goo r m e du";
    
    
    let words = foo.split(' ');
    let wordCount = words.length;
    
    console.log(wordCount); // 단어 개수 출력

    실수

    1. 위 코드는 문제와 상관없이 IDE에서 먼저 푼 부분이다. 여기서 실수를 했는 데, cnt 변수를 for 문 안에서 초기화를 했다는 점이다. 그렇게 되면 공백이 여러 개 있는 경우라도 cnt = 1; 이 될 것이다. 따라서 cnt를 for 문 밖에서 초기화 해주자. 

    let foo = " goo r m e du";
    
    let  cnt = 0;
    
    for (let i=0; i < foo.length; i++){
        if(foo[i] === ' '){
            cnt ++;
        }	
    }
    console.log(cnt + 1); // 5

     

    2. 공백이 여러 개일 때 는 어떻게 해야될 까 (이 부분은 내장함수를 사용해야 될 거 같다. 찾아보았다.)

    결론 코드부터 보여준다. 

    let foo = "goo   r m   e  du";
    console.log(foo);
    
    // 정규 표현식을 사용하여 문자열을 분리
    let words = foo.trim().split(/\s+/); 
    let wordCount = words.length;
    
    console.log(wordCount); // 단어 개수 출력

     

    • foo.trim()은 문자열의 앞뒤 공백을 제거합니다. (이 과정은 선택 사항입니다. 단어의 개수를 세는 데는 영향을 주지 않지만 문자열이 공백으로 시작하거나 끝날 경우 불필요한 공백을 제거할 수 있습니다.)
    • split(/\s+/)는 정규 표현식을 사용하여 하나 이상의 공백(즉, 연속된 공백)을 기준으로 문자열을 분리합니다

     

    '코딩테스트 > 구름' 카테고리의 다른 글

    [Python] 구름 : 앵무새 꼬꼬  (0) 2024.06.28
    [Python] 구름 : 고장난 컴퓨터  (0) 2024.06.12
    [Python] 구름 : 거꾸로 수 비교  (0) 2024.06.12
    [Python] 구름 : 절약  (0) 2024.06.12
Designed by Tistory.