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

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

x 사이의 개수

문제

문자열 myString이 주어집니다. myString을 문자 "x"를 기준으로 나눴을 때 나눠진 문자열 각각의 길이를 순서대로 저장한 배열을 return 하는 solution 함수를 완성해 주세요.

  • 제한사항
    • 1 ≤ myString의 길이 ≤ 100,000
      • myString은 알파벳 소문자로 이루어진 문자열입니다.

소스 코드

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 => {
  let answer = [];
  let count = 0;

  for (let i = 0; i < myString.length; i++) {
    if (myString[i] !== 'x') {
      count++;
    } else {
      answer.push(count);
      count = 0;
    }
  }
  answer.push(count);

  return answer;
};

문자열 잘라서 정렬하기

문제

문자열 myString이 주어집니다. myString을 문자 "x"를 기준으로 나눴을 때 나눠진 문자열 각각의 길이를 순서대로 저장한 배열을 return 하는 solution 함수를 완성해 주세요.

  • 제한사항
    • 1 ≤ myString의 길이 ≤ 100,000
      • myString은 알파벳 소문자로 이루어진 문자열입니다.

소스 코드

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 => {
  let answer = [];
  let str = '';

  for (let i = 0; i < myString.length; i++) {
    if (myString[i] !== 'x') {
      str += myString[i];
    } else {
      if (str !== '') {
        answer.push(str);
        str = '';
      }
    }
  }
  if (str !== '') {
    answer.push(str);
  }

  return answer.sort();
};

간단한 식 계산하기

문제

문자열 binomial이 매개변수로 주어집니다. binomial은 "a op b" 형태의 이항식이고 ab는 음이 아닌 정수, op는 '+', '-', '*' 중 하나입니다. 주어진 식을 계산한 정수를 return 하는 solution 함수를 작성해 주세요.

  • 제한사항
    • 0 ≤ a, b ≤ 40,000
    • 0을 제외하고 a, b는 0으로 시작하지 않습니다.

소스 코드

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

let binomial = '';

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

const solution = binomial => {
  const calcString = binomial.split(' ');
  if (calcString[1] === '+') {
    return parseInt(calcString[0]) + parseInt(calcString[2]);
  } else if (calcString[1] === '-') {
    return parseInt(calcString[0]) - parseInt(calcString[2]);
  } else if (calcString[1] === '*') {
    return parseInt(calcString[0]) * parseInt(calcString[2]);
  } else if (calcString[1] === '/')
    return parseInt(calcString[0]) / parseInt(calcString[2]);
};

문자열 바꿔서 찾기

문제

문자 "A"와 "B"로 이루어진 문자열 myStringpat가 주어집니다. myString의 "A"를 "B"로, "B"를 "A"로 바꾼 문자열의 연속하는 부분 문자열 중 pat이 있으면 1을 아니면 0을 return 하는 solution 함수를 완성하세요.

  • 제한사항
    • 1 ≤ myString의 길이 ≤ 100
    • 1 ≤ pat의 길이 ≤ 10
      • myStringpat는 문자 "A"와 "B"로만 이루어진 문자열입니다.

소스 코드

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) => {
  const reverseString = myString.split('').map((char) => char === 'A' ? 'B' : 'A').join('');
  for (let i = 0; i <= reverseString.length - pat.length; i++) {
    if (pat === reverseString.substring(i, i + pat.length)) {
      return 1;
    }
  }

  return 0;
};

rny_string

문제

'm'과 "rn"이 모양이 비슷하게 생긴 점을 활용해 문자열에 장난을 하려고 합니다. 문자열 rny_string이 주어질 때, rny_string의 모든 'm'을 "rn"으로 바꾼 문자열을 return 하는 solution 함수를 작성해 주세요.

  • 제한사항
    • 1 ≤ rny_string의 길이 ≤ 100
    • rny_string은 영소문자로만 이루어져 있습니다.

소스 코드

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

let rnyString = '';

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

const solution = rnyString => {
  return rnyString.split('').map(str => str === 'm' ? 'rn' : str).join('');
};

이 글이 도움이 되었나요?

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