백준 10808 알파벳 개수

bkboy·2022년 5월 16일
0

백준 초급

목록 보기
10/80
post-custom-banner

문제

알파벳 소문자로만 이루어진 단어 S가 주어진다. 각 알파벳이 단어에 몇 개가 포함되어 있는지 구하는 프로그램을 작성하시오.

제한사항

첫째 줄에 단어 S가 주어진다. 단어의 길이는 100을 넘지 않으며, 알파벳 소문자로만 이루어져 있다.

입출력 예

풀이

const s = require("fs").readFileSync("/dev/stdin").toString().split("");
const alphabet = "abcdefghijklmnopqrstuvwxyz";
let myMap = new Map();

for(let x of alphabet){
    myMap.set(x, 0);
}
for(let y of s){
    if(myMap.has(y)){
        myMap.set(y, myMap.get(y)+1);
    }
}
let answer = [...myMap.values()];
console.log(answer.join(" "));
  • 알파벳 문자열을 만든다.
  • map을 만들어 알파뱃을 키로 모든 값을 0으로 세팅해준다.
  • 문제의 문자열을 순회하며 그것과 같은 키 값이 map에 있으면 값을 1씩 더했다.
  • values()를 이용해 값들만 모았고 그것을 출력했다.

다른 풀이

const s = require("fs").readFileSync("/dev/stdin").toString().split("");
const alphabet = "abcdefghijklmnopqrstuvwxyz";
const counts = new Array(26).fill(0);
s.forEach(e => counts[alphabet.indexOf(e)]++);
console.log(counts.join(" "));
  • 알파뱃 문자열을 만드는 것까진 같다.
  • 26개의 원소를 가진 배열을 전부 0으로 초기화한다.
  • 문제의 문자열을 반복하며 배열에 값에 1씩 추가해준다.
  • 배열을 문자열로 바꾸기만 하면 된다.
  • 원래 내 방식보다 조금 더 간편한 방식이다.forEach도 자주활용해보자.
profile
음악하는 개발자
post-custom-banner

0개의 댓글