[코테] HackerRank Sparse Arrays

Dongmin Lee·2023년 5월 12일
0

코테

목록 보기
6/23

💿 문제

💾 문제 요약

배열 A,B 비교해서 배열 A에 배열 B의 요소가 몇개씩 일치하는지 구해라.

💿 풀이

for 문을 돌려서 queries의 요소를 돌아가며 카운팅함.

queriesd의 특정 요소가 strings 배열 내 몇개 있는지는
while문 + indexOf 매서드를 활용해서 구함.

while문을 탈출하면 계산한 count를 미리 선언한 배열에 push.

💾 풀이 코드

"use strict";

const fs = require("fs");

process.stdin.resume();
process.stdin.setEncoding("utf-8");

let inputString = "";
let currentLine = 0;

process.stdin.on("data", function (inputStdin) {
  inputString += inputStdin;
});

process.stdin.on("end", function () {
  inputString = inputString.split("\n");

  main();
});

function readLine() {
  return inputString[currentLine++];
}

/*
 * Complete the 'matchingStrings' function below.
 *
 * The function is expected to return an INTEGER_ARRAY.
 * The function accepts following parameters:
 *  1. STRING_ARRAY strings
 *  2. STRING_ARRAY queries
 */

function matchingStrings(strings, queries) {
  const arr = [];

  for (let i = 0; i < queries.length; i++) {
    let index = strings.indexOf(queries[i]);
    let count = 0;

    while (index !== -1) {
      count++;
      index = strings.indexOf(queries[i], index + 1);
    }
    arr.push(count);
  }

  return arr;
}

function main() {
  const ws = fs.createWriteStream(process.env.OUTPUT_PATH);

  const stringsCount = parseInt(readLine().trim(), 10);

  let strings = [];

  for (let i = 0; i < stringsCount; i++) {
    const stringsItem = readLine();
    strings.push(stringsItem);
  }

  const queriesCount = parseInt(readLine().trim(), 10);

  let queries = [];

  for (let i = 0; i < queriesCount; i++) {
    const queriesItem = readLine();
    queries.push(queriesItem);
  }

  const res = matchingStrings(strings, queries);

  ws.write(res.join("\n") + "\n");

  ws.end();
}

💿 리마인더

indexOf 매서드 -> 인자가 2개일 땐 2번째 인자 값인 인덱스부터 검사함.

profile
어제보다 성장하기

0개의 댓글