문제 설명
이 문제에는 표준 입력으로 두 개의 정수 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(('*'.repeat(a) + '\n').repeat(b));
});
문제 해결 과정
입력되어 들어오는 데이터의 전처리를 한 후 가로 길이 n만큼 *를 반복하고, 세로 길이 m만큼 *를 반복하면 문제를 해결할 수 있겠다고 생각하며 문제에 접근했다.
바로 생각이 들었던 것은 이중 반복문을 이용하는 방법이 떠올랐다. 그렇지만 이 방법보다 조금 더 코드를 줄일 수 있는 방법이 없을까 고민하다가 생각한 것이 내장 함수인 repeat 메서드였다.
우선 n만큼의 가로길이를 반복하고, 다음 줄로 넘어가려면 줄바꿈이 일어나야 하기 때문에 그 결과 값에 '\n' 이스케이프를 추가했고, 그 문자열을 다시 이어서 repeat 메서드에 적용해서 m만큼의 세로길이를 반복하게 처리했다.
구현에 사용했던 repeat 함수의 구문은 다음과 같다.
str.repeat(count)
매개변수
- count : 문자열을 반복할 횟수. ( 0과 양의 무한대 사이의 정수 )
반환 값 : 현재 문자열을 주어진 횟수만큼 반복해 붙인 새로운 문자열
참조
[ MDN - repeat ]
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/String/repeat
'Problem Solving > 프로그래머스' 카테고리의 다른 글
[ Lv. 2 ] 소수 찾기 - JavaScript (0) | 2022.06.25 |
---|---|
[ Lv. 1 ] 모의고사 - JavaScript (0) | 2022.06.25 |
[ Lv. 1 ] 최대공약수와 최소공배수 - JavaScript (0) | 2022.06.11 |
[ Lv. 1 ] 핸드폰 번호 가리기 (0) | 2022.06.11 |
[ Lv. 1 ] 하샤드 수 - JavaScript (0) | 2022.06.10 |