과거 프로그래밍 자료들/코딩테스트
[자바스크립트] 프로그래머스 - 별 찍기
평부
2022. 6. 22. 17:13
* 출처 : https://programmers.co.kr/learn/courses/30/lessons/12969
문제
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 |