코드
const fs = require("fs");
let input = fs.readFileSync("./test.txt").toString().trim().split("").sort();
const freq = Array(26).fill(0);
for (let char of input) {
freq[char.charCodeAt() - 97]++;
}
console.log(...freq);
풀이
'backjoon' 이라는 문자열에서 a가 몇번, b가 몇번.... z가 몇번 나왔는지를 조사해서 각 횟수별로 출력해주면 됨
막상 보면 평소 코딩할때처럼 각 알파벳마다 몇번씩 나왔는지를 오브젝트를 통해서 조사해서 해야되나 싶었지만
그러면 너무 비효율적임 - 이렇게 하면 없는 알파벳들을 출력하기 위해서 오브젝트에 {a : 0, b : 0 ...} 이렇게 하드코딩 먼저 해줘야될듯
그냥 간단하게 알파벳 숫자만큼 빈 배열을 하나 만들어놓고 , [a자리,b자리,c자리.....] 라고 가정함
문자열을 for문을 돌려서 b가 나왔다 - index 1 값을 ++ 해준다 이런식으로 하면 됨
a.charCodeAt === 97이기 때문에
해당 알파벳.charCodeAt - 97 하게되면 자기 자신의 인덱스 번호가 나오게 되고, 최종적으로 배열을 한번에 출력하면 됨
'코딩테스트 연습' 카테고리의 다른 글
백준 1874 - 스택 수열 (0) | 2023.04.17 |
---|---|
백준 10828 - 스택 (0) | 2023.04.17 |
15686- 치킨 배달 (0) | 2023.04.14 |
프로그래머스 - 택배 배달과 수거하기 (0) | 2023.04.13 |
프로그래머스 - 가장 긴 펠린드롬 (0) | 2023.04.12 |