[코딩테스트, 자바스크립트] 프로그래머스 문제풀기 2

휘루·2023년 7월 1일
0

코딩테스트

목록 보기
2/13

코딩 테스트 문제 1

코딩테스트 연습입니다. 다른 문제를 풀어볼게요.

문제

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

제한 사항

  • 1 ≤ str의 길이 ≤ 10
  • 1 ≤ n ≤ 5

입출력 예시

입력 #1

string 5

출력 #1

stringstringstringstringstring

주어진 코드

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

let input = [];

rl.on('line', function (line) {
    input = line.split(' ');
}).on('close', function () {
    str = input[0];
    
    const n = Array(5).fill(str).join('');
    console.log(n);
});

풀이

처음에 헤맸는데요. 처음에는 반복문으로 출력하면 되겠지 생각했습니다.

for (let i = 0; i < 5; i++) {
	console.log(str);
};

이렇게 생각하고 풀었는데

string
string
string
string
string

이렇게 나옵니다. 왜 세로로 나오지 가로로 나와야 되는데... 음... 구글링해도 못 찾아서
아는 동생한테 물어봤습니다. 그랬더니 join으로 ','를 ''로 비워서 붙여버리고 Array 써야한다고 하더군요.
그래서 array에 string을 넣고 join을 하는 방식으로 구글링 해서 찾았습니다.

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

let input = [];

rl.on('line', function (line) {
    input = line.split(' ');
}).on('close', function () {
    str = input[0];
    
    const n = Array(5).fill(str).join('');
    console.log(n);
});

이렇게 해봤는데... 음 안되네요.
안되서 또 고민해봅니다. n 외에도 새로 설정해야되나 고민 해봤는데
5를 문자열로 취급해서 Array에 넣어봤습니다.

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

let input = [];

rl.on('line', function (line) {
    input = line.split(' ');
}).on('close', function () {
    const str = input[0];
    const n = parseInt(input[1]);

    const repeat = Array(n).fill(str).join('');
    console.log(repeat);
});

이렇게 해봤는데 되긴... 됩니다...

바뀐건 parseInt로 5를 형변환해서 문자열 합치기 ('string'+'5')처럼 된거 같은데
stringstringstringstringstring은 형변환으로 둘 다 문자열 맞춰야 답이 되는건가? 싶더라구요.

그래서 다르게 풀어보기

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

let input = [];

rl.on('line', function (line) {
    input = line.split(' ');
}).on('close', function () {
    const str = input[0];
    const n = parseInt(input[1]);
    
    console.log(str.repeat(n));

str은 'string'
n은 5 (형변환해서 문자인 채로 5)
console.log(string.반복(5번)); 하면

stringstringstringstringstring이 됩니다.

다른분이 푼 거 살펴보기

const str = input[0];
const n = parseInt(input[1]);

console.log(str.repeat(n));

이거 보고 아차 싶었습니다.
아 반복문 repeat으로 5번 반복시켰구나! (n = 5 담겨 있으니까)
그리고 parseInt(input[1]);는 Number(input[1]);도 사용이 됩니다.

n = Number(input[1]);
str = '';

for (let i = 0; i < n; i++) {
	str = str + input[0];
};
console.log(str);

이건 다른 분 답인데요.

n은 5, str은 비우고 for 반복합니다.
str = str + string ('' + string) 이므로 string이죠.
string으로 5번합니다. 그래서 console.log(str);하면 stringstringstringstringstring

그러면

되네요 신기합니다...

profile
반가워요

0개의 댓글