728x90
https://www.acmicpc.net/problem/10820
문제
문자열 N개가 주어진다. 이때, 문자열에 포함되어 있는 소문자, 대문자, 숫자, 공백의 개수를 구하는 프로그램을 작성하시오.
각 문자열은 알파벳 소문자, 대문자, 숫자, 공백으로만 이루어져 있다.
입력
첫째 줄부터 N번째 줄까지 문자열이 주어진다. (1 ≤ N ≤ 100) 문자열의 길이는 100을 넘지 않는다.
출력
첫째 줄부터 N번째 줄까지 각각의 문자열에 대해서 소문자, 대문자, 숫자, 공백의 개수를 공백으로 구분해 출력한다.
예제 입출력
입력 | 출력 |
This is String SPACE 1 SPACE S a M p L e I n P u T 0L1A2S3T4L5I6N7E8 |
10 2 0 2 0 10 1 8 5 6 0 16 0 8 9 0 |
풀이[node.js]
728x90
이번 문제는 input[i]값이 공백으로 들어오는 경우엔 처리하지 않아야 정답이 나온다는 사실을 깨닫느라 시간을 많이 할애했습니다.
문제 자체는 어렵지 않으나, input에 ''값이 들어온 경우, answer에 0 0 0 0이 들어가게서 틀렸다고 채점결과가 나오니 주의하셔야합니다.
문제는 쉽습니다. input[i]를 split해서 해당 값이 a에서 z사이의 값이면 answer[0]추가, A에서 Z사이의 값이면 answer[1]추가와 같은 방식으로 문제를 풀어주면 됩니다.
var fs = require('fs');
var input = fs.readFileSync('/dev/stdin').toString().split('\n');
var result = '';
for(var i in input){
if(input[i] === '') continue;
var answer = [0, 0, 0, 0];
var splited = input[i].split('');
for(var j in splited){
if( splited[j] >='a' && splited[j]<='z' ){
answer[0]++;
}else if( splited[j] >='A' && splited[j] <='Z' ){
answer[1]++;
}else if(splited[j]>='0' && splited[j]<='9' ){
answer[2]++;
}else if( splited[j] === ' '){
answer[3]++;
}
}
result += answer.join(' ') + '\n';
}
console.log(result.trim());
728x90
'알고리즘 스터디 > 백준 알고리즘 기초 1' 카테고리의 다른 글
[백준 11656번 접미사 배열 - node.js] [알고리즘 기초 1/2] (0) | 2021.07.30 |
---|---|
[백준 10824번 네 수- node.js] [알고리즘 기초 1/2] (0) | 2021.07.30 |
[백준 2743번 단어 길이 재기 - node.js] [알고리즘 기초 1/2] (0) | 2021.07.29 |
[백준 10808번 알파벳 개수 - node.js] [알고리즘 기초 1/2] (0) | 2021.07.29 |
[백준 10799번 쇠막대기 - node.js] [알고리즘 기초 1/2] (0) | 2021.07.29 |
댓글