찰리의 이야기

Javascript 직사각형 별찍기 본문

찰리: 코딩 연습

Javascript 직사각형 별찍기

쨜리 2021. 8. 27. 23:00
반응형

직사각형 별찍기

 

 

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

제한 조건

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

주어진 코드 ↓

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

주어진 자연수 만큼 가로와 세로로 이루어진 직사각형을 출력하는 문제다.

주어진 정수만큼 별을 그려야하기 때문에

반복문을 이용한 문자열을 이용해야겠다는 생각이 들었다.

 

세로의 길이는 가로를 출력한 것 전체를 반복하여 그리면 된다고 생각하니

중첩된 반복문이 생각되었다. 

많은 중첩 반복문은 코드 가독성을 헤치지 않을까 우려되었으나

2번 정도는 봐줄만 하지 않을까 싶어서 일단 풀어보았다.

 

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

Javascript 에서 문자열은 +로 더해지기 때문에 

별을 그리는 것은 문자열(result)에 *을 더하는 것으로 반복하였고,

세로열을 그리는 반복 횟수는 바깥 반복문에서 b횟수만큼 그렸다.

또한 하나의 세로줄이 마칠 때 줄바꿈을 위해서

이스케이프 시퀀스 \n 을 별 끝에 더해주었다.

Javascript에서 문자열을 다룰 때 이스케이프 시퀀스들이 많은 도움이 된다.

 

여기까지가 내가 구현한 방식이고,

다른 풀이법도 참고해보았다.

 

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)
    }

});

여기서는 문자열의 반복을 이용하는 메서드인 repeat()을 사용하였다.

반복되는 문자열을 사용할때는 reapeat() 메서드를 활용해보자!

 

오늘의 연습 끝!

 

 

 

 

직사각형 별찍기

반응형

'찰리: 코딩 연습' 카테고리의 다른 글

Javascript 하샤드 수  (0) 2021.09.08
Javascript 핸드폰 번호 가리기  (0) 2021.09.01
Javascript 행렬의 덧셈  (0) 2021.09.01
Javascript x만큼 간격이 있는 n개의 숫자  (0) 2021.08.28
Javascript 자릿수 더하기  (0) 2021.08.26
Comments