프로그래머스 Lv.1 직사각형 별찍기

Lian Kim·2022년 8월 18일
0

coding-test

목록 보기
13/19

직사각형 별찍기

문제

문제 설명

이 문제에는 표준 입력으로 두 개의 정수 n과 m이 주어집니다.
별(*) 문자를 이용해 가로의 길이가 n, 세로의 길이가 m인 직사각형 형태를 출력해보세요.


제한 사항

  • n과 m은 각각 1000 이하인 자연수입니다.

입출력 예




풀이

나의 풀이

이중 for문을 피하고 싶었는데 순회하는 내내 조건문을 확인해야 하니 오히려 이 풀이가 성능이 더 좋지 않을 듯 하다.
1. 총 별의 개수는 a와 b를 곱한 값이므로 a*b만큼 반복문을 돌면서 빈 문자열 stars에 *을 붙여주는데,
2. 한 줄의 개수는 a와 같으므로 a를 찍고나서 줄을 바꾸기 위해 개행문자 \n을 추가해준다.
=> i%a이 0일 때(i===a, i===a*2, i===a*3...)

process.stdin.setEncoding('utf8');
process.stdin.on('data', data => {
    const n = data.split(" ");
    const a = Number(n[0]), b = Number(n[1]);
    let stars = ""

    for (let i = 1; i <= a * b; i++) {
        if (i % a === 0) stars += ("*" + '\n');
        else stars += "*";
    }
  
    console.log(stars);
});

다른 사람들의 풀이

repeat()

process.stdin.setEncoding('utf8');
process.stdin.on('data', data => {
    const n = data.split(" ");
    const a = Number(n[0]), b = Number(n[1]);
    const row = '*'.repeat(a);
    for(let i = 0; i < b; i++) {
        console.log(row);
    }
});
process.stdin.setEncoding('utf8');
process.stdin.on('data', data => {
    const n = data.split(" ");
    const a = Number(n[0]), b = Number(n[1]);
    const star = `${'*'.repeat(a)}\n`;

    console.log(star.repeat(b));
});
process.stdin.setEncoding('utf8');
process.stdin.on('data', data => {
    const n = data.split(" ");
    var a = Number(n[0]), b = Number(n[1]),
        stars = '';

    while (a-- > 0) 
        stars += '*';

    while (b-- > 0)
        console.log(stars);
});



WIL

String.prototype.repeat()

문자열 반복 함수

repeat(count)

repeat 메서드는 대상 문자열을 인수로 전달받은 정수만큼 반복해 연결한 새로운 문자열을 반환한다. 이때 인수는 0과 +Infinity 사이의 정수를 전달해야 한다.
인수로 전달받은 정수가 0이면 빈 문자열을 반환하고, 음수이면 RangeError를 발생시킨다. 인수를 생략하면 기본값 0이 설정된다.

0개의 댓글