► JS Algorithm/Programmers

[Programmers] JavaScript 알고리즘 | Lv.0 문자 개수 세기

다람트리 2024. 8. 18. 19:52
반응형

🔒 문제 설명

알파벳 대소문자로만 이루어진 문자열 my_string 주어질 , my_string에서 'A' 개수, my_string에서 'B' 개수,..., my_string에서 'Z' 개수, my_string에서 'a' 개수, my_string에서 'b' 개수,..., my_string에서 'z' 개수를 순서대로 담은 길이 52 정수 배열을 return 하는 solution 함수를 작성해 주세요.


🔒 제한사항

  • 1 ≤ my_string 길이 ≤ 1,000

🔒 입출력 예

my_string result
"Programmers" [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 2, 0, 1, 0, 0, 3, 1, 0, 0, 0, 0, 0, 0, 0]

🔒 입출력 예 설명

입출력 예 #1

  • 예제 1번의 my_string에서 'P' 1, 'a' 1, 'e' 1, 'g' 1, 'm' 2, 'o' 1, 'r' 3, 's' 1 있으므로 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 2, 0, 1, 0, 0, 3, 1, 0, 0, 0, 0, 0, 0, 0] return 합니다.

 

🔐 solution of mine

Array.prototype.forEach()

Object.values()

const map = {
  A: 0,
  B: 0,
  C: 0,
  D: 0,
  E: 0,
  F: 0,
  G: 0,
  H: 0,
  I: 0,
  J: 0,
  K: 0,
  L: 0,
  M: 0,
  N: 0,
  O: 0,
  P: 0,
  Q: 0,
  R: 0,
  S: 0,
  T: 0,
  U: 0,
  V: 0,
  W: 0,
  X: 0,
  Y: 0,
  Z: 0,
  a: 0,
  b: 0,
  c: 0,
  d: 0,
  e: 0,
  f: 0,
  g: 0,
  h: 0,
  i: 0,
  j: 0,
  k: 0,
  l: 0,
  m: 0,
  n: 0,
  o: 0,
  p: 0,
  q: 0,
  r: 0,
  s: 0,
  t: 0,
  u: 0,
  v: 0,
  w: 0,
  x: 0,
  y: 0,
  z: 0,
};
function solution(my_string) {
  const arr = map;
  [...my_string].forEach((v) => arr[v]++);

  return console.log(Object.values(arr));
}

solution("Programmers"); // expected output: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 2, 0, 1, 0, 0, 3, 1, 0, 0, 0, 0, 0, 0, 0]

 


 

🔐 GPT's solution

Array() 생성자

Array.prototype.fill()

String.prototype.charCodeAt()

function solution(my_string) {
  // 결과를 저장할 배열을 초기화
  const result = Array(52).fill(0);

  // 각 문자에 대해 처리
  for (const char of my_string) {
    if (char >= "A" && char <= "Z") {
      // 대문자의 경우
      result[char.charCodeAt(0) - "A".charCodeAt(0)]++;
    } else if (char >= "a" && char <= "z") {
      // 소문자의 경우
      result[26 + char.charCodeAt(0) - "a".charCodeAt(0)]++;
    }
  }

  return console.log(result);
}

solution("Programmers"); // expected output: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 2, 0, 1, 0, 0, 3, 1, 0, 0, 0, 0, 0, 0, 0]

 

🔐 solution of others

Array.length

Array.prototype.fill()

Array.prototype.map()

Array.prototype.indexOf()

function solution(my_string) {
  let al = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
  let arr = [];

  arr.length = 52;
  arr.fill(0);

  [...my_string].map((v) => arr[al.indexOf(v)]++);

  return console.log(arr);
}

solution("Programmers"); // expected output: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 2, 0, 1, 0, 0, 3, 1, 0, 0, 0, 0, 0, 0, 0]

🔐 solution of others

Array.prototype.reduce()

String.prototype.charCodeAt()

String.prototype.toLowerCase()

Array() 생성자

Array.prototype.fill()

function solution(str) {
  return console.log(
    [...str].reduce(
      (a, c) => (
        a[c.charCodeAt() - (c === c.toLowerCase() ? 71 : 65)]++, a
      ),
      Array(52).fill(0)
    )
  );
}

solution("Programmers"); // expected output: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 2, 0, 1, 0, 0, 3, 1, 0, 0, 0, 0, 0, 0, 0]

 

 


 

반응형