문제
영문 문장을 입력받아 모음의 개수를 세는 프로그램을 작성하시오. 모음은 'a', 'e', 'i', 'o', 'u'이며 대문자 또는 소문자이다.
입력
입력은 여러 개의 테스트 케이스로 이루어져 있으며, 각 줄마다 영어 대소문자, ',', '.', '!', '?', 공백으로 이루어진 문장이 주어진다. 각 줄은 최대 255글자로 이루어져 있다.
입력의 끝에는 한 줄에 '#' 한 글자만이 주어진다.
출력
각 줄마다 모음의 개수를 세서 출력한다.
풀이
문제의 접근 방식은 여러가지가 있는데
일단 모음 판별에 대해서 이야기하자면
a, e, i, o, u를 if문을 통해 조회해서 처리할 수 있고
또는 배열 내부에 넣은 다음 arr.includes(str) 형태로 각각의 문자열을 직접 조회해볼 수도 있다.
문자열이 적어 시간복잡도면에서 크게 손실이 나지는 않지만
includes를 사용하기보다는 객체로 넣어 해당 글자를 바로 조회할 수 있게 만들었으며
각각의 문자열 내부에 모음이 있을 경우 count를 추가하고
하나의 문자열의 조회가 끝난 경우 count를 result에 넣어준 다음
최종적으로 result.join('\n')을 통해 요구하는 형태로 출력했다.
const input = require('fs').readFileSync('/dev/stdin').toString().trim().split('\n')
const vowel = {a : 1, e : 1, i : 1, o : 1, u : 1}
const result = []
for(let i = 0 ; i < input.length - 1 ; i++){
let count = 0;
for(let j = 0 ; j < input[i].length ; j++){
if(vowel[input[i][j].toLowerCase()]){
count += 1
}
}
result.push(count)
}
console.log(result.join('\n'))
const input = `How are you today?
Quite well, thank you, how about yourself?
I live at number twenty four.
#`.split('\n')
const vowel = {a : 1, e : 1, i : 1, o : 1, u : 1}
for(let i = 0 ; i < input.length - 1 ; i++){
let num = 0;
for(let j = 0 ; j < input[i].length ; j++){
if(vowel[input[i][j].toLowerCase()]){
num += 1
}
}
console.log(num)
}'알고리즘 > 백준' 카테고리의 다른 글
| [백준 JS] 2440번 별 찍기 - 3 (0) | 2023.03.09 |
|---|---|
| [백준 JS] 2439번 별 찍기 - 2 (0) | 2023.03.09 |
| [백준 JS] 25311번 UCPC에서 가장 쉬운 문제 번호는? (0) | 2023.03.08 |
| [백준 JS] 25083번 새싹 (0) | 2023.03.08 |
| [백준 JS] 18108번 1998년생인 내가 태국에서는 2541년생?! (0) | 2023.03.08 |
