hsskey / algorithm-practice

🧑‍💻 Solving algorithms to level up
0 stars 0 forks source link

모음의 개수 #20

Open hsskey opened 1 month ago

hsskey commented 1 month ago

모음의 개수

영문 문장을 입력받아 모음의 개수를 세는 프로그램을 작성하시오. 모음은 'a', 'e', 'i', 'o', 'u'이며 대문자 또는 소문자이다.

📝 제약조건

💡 예시

문제 해결 과정

Step1. 문제 이해하기

Step 2. 접근 방법

Step 3. 코드 설계(의사코드)

Step 4. 코드 구현

const fs = require('fs');
const filePath = process.platform === 'linux' ? '/dev/stdin' : `${__dirname}/input.txt`;
const input = fs.readFileSync(filePath).toString().split('\n');

const vowels = new Set(['a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U']);

for (let line of input) {
    if (line === '#') break;

    let count = 0;
    for (let char of line) {
        if (vowels.has(char)) {
            count++;
        }
    }

    console.log(count);
}

Step 5. 문제풀이 형상화(예시)

  1. 예시 입력: "How are you today?"

    • 모음 개수: 7
    • 출력: 7
  2. 엣지 케이스 예시:

    • 빈 문자열: ""
      • 기대 출력: 0
    • 특수 문자만 있는 문자열: "?!., "
      • 기대 출력: 0
    • 모음만 있는 문자열: "aeiouAEIOU"
      • 기대 출력: 10
    • 모음이 없는 문자열: "bcdfg"
      • 기대 출력: 0
hsskey commented 1 month ago

정규표현식을 이용한 다른 풀이

const fs = require('fs')
const filePath = process.platform === 'linux' ? '/dev/stdin' : `${__dirname}/input.txt`
const input = fs.readFileSync(filePath).toString().split('\n')

for (let item of input) {
    if (item === '#') {
        break;
    }
    const matchedArr = item.match(/[aeiou]/gi) ?? [];
    console.log(matchedArr.length);
}