성장가능성 200% 프론트엔드의 Dev 다이어리

[코딩테스트/JS] 직사각형 별찍기 본문

퍼블리싱/Coding Test

[코딩테스트/JS] 직사각형 별찍기

ZinnaJeong 2022. 3. 7. 01:00

문제 설명

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

 

제한 조건

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

 

입출력 예

입력

5 3

 

출력

*****
*****
*****

 

초기 코드

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

 

본인이 풀어본 코드

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); //5
    console.log(b); //3
    
    for (var i = 1; i <= b; i++) {
        var answer = '*'.repeat(a)
                    ('\n' * (b-1)) + '*'.repeat(a);
    }
    console.log(answer);
});

이건 내가 결국 못 풀었던 문제ㅠ

 

줄바꿈을 대체 어떻게 해야하나 나름의 고민이 담겨서 일단 코드를 적어보았다.

일단 a만큼 '*'이 반복되고, b의 -1 만큼 줄바꿈(\n)이 실행돼야할 것 같았다.

 

그치만 장렬히 실패... 그러다가 깜빡 잠들고 못풀었다가 스터디 같이 하는 팀원들과 함께 보고 아하~ 싶었다.

 

 

팀원이 풀어본 코드

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); 5
    //console.log(b); 3
    
    let star = '*', c = '';
    
    for (var i = 0; i < b; i++) {
    	c += star.repeat(a) + '\n';
    }
    console.log(c);
});

줄바꿈 부분에서 어떻게 할지 고민이 많았는데, 이런 식으로 반복문을 b 만큼 돌리는데,

*와 줄바꿈(\n)을 포함한 구문을 반복시키면 해결되는 부분이었다!

 

사이다 해결 방법

 


+

끈기가 조금 부족한가 싶기도 하지만, 그래도 한 걸음씩 어제보단 나아지고 있다는 사실이 중요한게 아닐까 위로해본다

반응형
Comments