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

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

문자열의 앞의 n글자

문제

문자열 my_string과 정수 n이 매개변수로 주어질 때, my_string의 앞의 n글자로 이루어진 문자열을 return 하는 solution 함수를 작성해 주세요.

  • 제한사항
    • my_string은 숫자와 알파벳으로 이루어져 있습니다.
    • 1 ≤ my_string의 길이 ≤ 1,000
    • 1 ≤ n ≤ my_string의 길이

소스 코드

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

let my_string = '';
let n = 0;
let count = 0;

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

const solution = (my_string, n) => {
  return my_string.slice(0, n);
};

접두사인지 확인하기

문제

어떤 문자열에 대해서 접두사는 특정 인덱스까지의 문자열을 의미합니다. 예를 들어, "banana"의 모든 접두사는 "b", "ba", "ban", "bana", "banan", "banana"입니다. 문자열 my_stringis_prefix가 주어질 때, is_prefixmy_string의 접두사라면 1을, 아니면 0을 return 하는 solution 함수를 작성해 주세요.

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

소스 코드

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

let my_string = '';
let is_prefix = '';
let count = 0;

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

const solution = (my_string, is_prefix) => {
  const prefix = my_string.slice(0, is_prefix.length);
  return is_prefix.length <= my_string.length && prefix.includes(is_prefix) ? 1 : 0;
};

문자열 뒤집기

문제

문자열 my_string과 정수s, e가 매개변수로 주어질 때, my_string에서 인덱스 s부터 인덱스 e까지를 뒤집은 문자열을 return 하는 solution 함수를 작성해 주세요.

  • 제한사항
    • my_string은 숫자와 알파벳으로만 이루어져 있습니다.
    • 1 ≤ my_string의 길이 ≤ 1,000
    • 0 ≤ se < my_string의 길이

소스 코드

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

let my_string = '';
let input = '';
let count = 0;

rl.on('line', (line) => {
  if (count === 0) {
    my_string = line;
  } else {
    input = line.split(' ').map(Number);
  }
  count++;
  if (count > 1) {
    rl.close();
  }
}).on('close', () => {
  const answer = solution(my_string, input[0], input[1]);
  console.log(answer);
});

const solution = (my_string, s, e) => {
  const prefix = my_string.slice(0, s);
  const interval = my_string.slice(s, e + 1);
  let reverse = '';
  for (let i = e - s; i >= 0; i--) {
    reverse += interval[i];
  }
  const suffix = my_string.slice(e + 1);

  return prefix + reverse + suffix;
};

세로 읽기

문제

문자열 my_string과 두 정수 m, c가 주어집니다. my_string을 한 줄에 m 글자씩 가로로 적었을 때 왼쪽부터 세로로 c번째 열에 적힌 글자들을 문자열로 return 하는 solution 함수를 작성해 주세요.

  • 제한사항
    • my_string은 영소문자로 이루어져 있습니다.
    • 1 ≤ mmy_string의 길이 ≤ 1,000
    • mmy_string 길이의 약수로만 주어집니다.
    • 1 ≤ cm

소스 코드

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

let my_string = '';
let input = '';
let count = 0;

rl.on('line', (line) => {
  if (count === 0) {
    my_string = line;
  } else {
    input = line.split(' ').map(Number);
  }
  count++;
  if (count > 1) {
    rl.close();
  }
}).on('close', () => {
  const answer = solution(my_string, input[0], input[1]);
  console.log(answer);
});

const solution = (my_string, m, c) => {
  const array = [];
  let answer = '';
  for (let i = 0; i < my_string.length; i += m) {
    array.push(my_string.slice(i, i + m));
  }

  for (let i = 0; i < array.length; i++) {
    answer += (array[i])[c - 1];
  }

  return answer;
};

qr code

문제

두 정수 q, r과 문자열 code가 주어질 때, code의 각 인덱스를 q로 나누었을 때 나머지가 r인 위치의 문자를 앞에서부터 순서대로 이어 붙인 문자열을 return 하는 solution 함수를 작성해 주세요.

  • 제한사항
    • 0 ≤ r< q ≤ 20
    • r < code의 길이 ≤ 1,000
    • code는 영소문자로만 이루어져 있습니다.

소스 코드

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

let code = '';
let input = '';
let count = 0;

rl.on('line', (line) => {
  if (count === 0) {
    input = line.split(' ').map(Number);
  } else {
    code = line;
  }
  count++;
  if (count > 1) {
    rl.close();
  }
}).on('close', () => {
  const answer = solution(input[0], input[1], code);
  console.log(answer);
});

const solution = (q, r, code) => {
  let answer = '';
  for (let i = r; i < code.length; i += q) {
    answer += code[i];
  }

  return answer;
};

이 글이 도움이 되었나요?

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