프로그래머스/Javascript : 기초 문제 17일차

프로그래머스/Javascript : 기초 문제 17일차

특정 문자열로 끝나는 가장 긴 부분 문자열 찾기

문제

문자열 myStringpat가 주어집니다. myString의 부분 문자열중 pat로 끝나는 가장 긴 부분 문자열을 찾아서 return 하는 solution 함수를 완성해 주세요.

  • 제한사항
    • 5 ≤ myString ≤ 20
    • 1 ≤ pat ≤ 5
      • pat은 반드시 myString의 부분 문자열로 주어집니다.
    • myStringpat에 등장하는 알파벳은 대문자와 소문자를 구분합니다.

소스 코드

const readline = require('readline');
const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout,
});

let myString = '';
let pat = '';
let count = 0;

rl.on('line', (line) => {
  if (count === 0) {
    myString = line;
  } else {
    pat = line;
  }
  count++;
  if (count > 1) {
    rl.close();
  }
}).on('close', () => {
  const answer = solution(myString, pat);
  console.log(answer);
});

const solution = (myString, pat) => {
  for (let i = myString.length + 1 - pat.length; i >= 0; i--) {
    if (pat === myString.substring(i, i + pat.length)) {
      return myString.substring(0, i + pat.length);
    }
  }
};

문자열이 몇 번 등장하는지 세기

문제

문자열 myStringpat이 주어집니다. myString에서 pat이 등장하는 횟수를 return 하는 solution 함수를 완성해 주세요.

  • 제한사항
    • 1 ≤ myString ≤ 1000
    • 1 ≤ pat ≤ 10

소스 코드

const readline = require('readline');
const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout,
});

let myString = '';
let pat = '';
let count = 0;

rl.on('line', (line) => {
  if (count === 0) {
    myString = line;
  } else {
    pat = line;
  }
  count++;
  if (count > 1) {
    rl.close();
  }
}).on('close', () => {
  const answer = solution(myString, pat);
  console.log(answer);
});

const solution = (myString, pat) => {
  let count = 0;
  for (let i = myString.length + 1 - pat.length; i >= 0; i--) {
    if (pat === myString.substring(i, i + pat.length)) {
      count++;
    }
  }

  return count;
};

ad 제거하기

문제

문자열 배열 strArr가 주어집니다. 배열 내의 문자열 중 "ad"라는 부분 문자열을 포함하고 있는 모든 문자열을 제거하고 남은 문자열을 순서를 유지하여 배열로 return 하는 solution 함수를 완성해 주세요.

  • 제한사항
    • 1 ≤ strArr의 길이 ≤ 1,000
      • 1 ≤ strArr의 원소의 길이 ≤ 20
      • strArr의 원소는 알파벳 소문자로 이루어진 문자열입니다.

소스 코드

const readline = require('readline');
const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout,
});

let strArr = '';

rl.on('line', (line) => {
  strArr = line;
  rl.close();
}).on('close', () => {
  const answer = solution(strArr);
  console.log(answer);
});

const solution = strArr => {
  return strArr.filter(str => !str.includes('ad'));
};

공백으로 구분하기 1

문제

단어가 공백 한 개로 구분되어 있는 문자열 my_string이 매개변수로 주어질 때, my_string에 나온 단어를 앞에서부터 순서대로 담은 문자열 배열을 return 하는 solution 함수를 작성해 주세요.

소스 코드

const readline = require('readline');
const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout,
});

let myString = '';

rl.on('line', (line) => {
  myString = line;
  rl.close();
}).on('close', () => {
  const answer = solution(strArr);
  console.log(answer);
});

const solution = myString => {
  return myString.split(' ');
};

공백으로 구분하기 2

문제

단어가 공백 한 개 이상으로 구분되어 있는 문자열 my_string이 매개변수로 주어질 때, my_string에 나온 단어를 앞에서부터 순서대로 담은 문자열 배열을 return 하는 solution 함수를 작성해 주세요.

  • 제한사항
    • my_string은 영소문자와 공백으로만 이루어져 있습니다.
    • 1 ≤ my_string의 길이 ≤ 1,000
    • my_string의 맨 앞과 맨 뒤에도 공백이 있을 수 있습니다.
    • my_string에는 단어가 하나 이상 존재합니다.

소스 코드

const readline = require('readline');
const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout,
});

let myString = '';

rl.on('line', (line) => {
  myString = line;
  rl.close();
}).on('close', () => {
  const answer = solution(myString);
  console.log(answer);
});

const solution = myString => {
  return myString.replace(/ +/g, ' ')
    .split(' ')
    .filter(str => str !== '');
};

이 글이 도움이 되었나요?

신고하기
0분 전
작성된 댓글이 없습니다. 첫 댓글을 달아보세요!
    댓글을 작성하려면 로그인이 필요합니다.