과거 프로그래밍 자료들/코딩테스트

[자바스크립트] 프로그래머스 - 별 찍기

평부 2022. 6. 22. 17:13

* 출처 : https://programmers.co.kr/learn/courses/30/lessons/12969

 

코딩테스트 연습 - 직사각형 별찍기

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

programmers.co.kr

 

문제

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
이 문제에는 표준 입력으로 두 개의 정수 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);
});
cs

 

풀이

- data에 입력받은 숫자륻ㄹ을 받음

- split은 숫자를 배열로 만듦(" "로 분리된 부분을 배열로 만듦)

- a는 예시의 5(한 줄에 표현될 별의 개수), b는 예시의 3(몇 줄로 만들지)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
* 출력
 
process.stdin.setEncoding('utf8');
process.stdin.on('data', data => {
    const n = data.split(" ");
    const a = Number(n[0]), b = Number(n[1]);
//a나 b는 위의 Number로 표시했기에 굳이 length를 붙이지 
   for(let i=0; i<b; i++) { //i선언하고 몇 줄 반큼 반복
       let result = "";
       for(let j=0; j<a; j++) { //j 선언하고 별을 몇 개 반복
           result = result + "*";
       }
        console.log(result);
   }
    
});
cs

 

다른 풀이

- repeat 사용

- repeat() 메서드는 문자열을 주어진 횟수만큼 반복해 붙인 새로운 문자열을 반환합니다.

 

1
2
3
4
5
6
7
8
9
10
11
 
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)
    }
 
});
cs