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