프로그래머스 181950 문자열 반복해서 출력하기 javascript

곰개구리·2023년 12월 28일
0

알고리즘

목록 보기
4/5
post-custom-banner

곰개구리 알고리즘 매니패스토

1. 하나의 문제에 대해 최소 2가지 이상의 풀이를 생각한다.
2. null, undefined등을 고려하는 방어적이고 안전한 코드를 작성한다.
3. 알기 쉬운 변수명을 지정한다.
4. 읽기 쉬운 주석을 작성한다.
...
코딩하다 생각나면 맘대로 추가

문제 설명

문자열 str과 정수 n이 주어집니다.
str이 n번 반복된 문자열을 만들어 출력하는 코드를 작성해 보세요.

아이디어

결과 문자열을 얻기 위해서는 주어지는 문자열을 주어지는 숫자만큼 축적한 결과를 반환해야 한다.

설계

1. 반복문
2. Array.prototype.reduce()
3. String.prototype.repeat()

구현

1. 반복문

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

let input = [];

rl.on('line', function (line) {
    typeof line === 'string' ? input = line.split(' ') : null;
}).on('close', function () {
    // 결과 문자열
    let answer = ''
    const [
        inputStr, // 반복될 문자열 
        n // 반복될 수
    ] = [String(input[0]), Number(input[1])]
    
    // 반복될 수 만큼 반복문 시행
    for(let i = 0; i < n ; i += 1) {
        answer += inputStr
        // concat을 이용한 풀이
        // answer = answer.concat(inputStr)
    }
    console.log(answer)
});

2. Array.prototype.reduce()

  • 목표 문자열 inputStr 요소를 n 개 가지는 배열을 만들고, reduce를 통한 축적으로 해결하였다.
  • 어거지라는 느낌이 없잖아 들지만...
2.1 Array.from()
const readline = require('readline');
const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout
});

let input = [];

rl.on('line', function (line) {
    typeof line === 'string' ? input = line.split(' ') : null;
}).on('close', function () {
    // 결과 문자열
    let answer = ''
    const [
        inputStr, // 반복될 문자열 
        n // 반복될 수
    ] = [String(input[0]), Number(input[1])]
    
    // inputStr 요소를 n개 가지는 배열 생성
    const inputArray = Array.from({ length: n }, () => inputStr);
    
    answer = inputArray.reduce((accumulator, currentValue) => {
        return accumulator.concat(currentValue)
    }, answer)
    
    console.log(answer)
});
2.2 Array.fill()
const readline = require('readline');
const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout
});

let input = [];

rl.on('line', function (line) {
    typeof line === 'string' ? input = line.split(' ') : null;
}).on('close', function () {
    // 결과 문자열
    let answer = ''
    const [
        inputStr, // 반복될 문자열 
        n // 반복될 수
    ] = [String(input[0]), Number(input[1])]
    
    // inputStr 요소를 n개 가지는 배열 생성
    const inputArray = Array(n).fill(inputStr)
    
    answer = inputArray.reduce((accumulator, currentValue) => {
        return accumulator.concat(currentValue)
    }, answer)
    
    console.log(answer)
});

3. String.prototype.repeat()

  • 현재로서는 가장 idle한 방법이 아닐까
const readline = require('readline');
const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout
});

let input = [];

rl.on('line', function (line) {
    typeof line === 'string' ? input = line.split(' ') : null;
}).on('close', function () {
    // 결과 문자열
    let answer = ''
    const [
        inputStr, // 반복될 문자열 
        n // 반복될 수
    ] = [String(input[0]), Number(input[1])]
    
    // input을 n번 반복한 문자열 생성
    answer = inputStr.repeat(n)
    
    console.log(answer)
});
profile
개굴개굴 곰개굴
post-custom-banner

0개의 댓글