Programmers 프로그래머스 코딩테스트 연습 - 직사각형 별찍기 (JavaScript)
Programmers(프로그래머스)의 코딩테스트 연습문제 Level 1 중,
직사각형 별찍기 문제를 JavaScript로 해결해 보도록 하겠습니다.
문제 설명
이 문제에는 표준 입력으로 두 개의 정수 n과 m이 주어집니다.
별(*) 문자를 이용해 가로의 길이가 n, 세로의 길이가 m인 직사각형 형태를 출력해보세요.
제한 조건
- n과 m은 각각 1000 이하인 자연수입니다.
예시
입력
5 3
출력
*****
*****
*****
작성한 답
solution.js
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이 주어집니다. 별(*) 문자를 이용해 가로의 길이가 n, 세로의 길이가 m인 직사각형 형태를 출력해보세요." 라고 하지만,
실제 기본으로 작성되어있는 코드상에서는 두개의 정수 a와 b가 주어지고, 별(*) 문자를 이용해 가로의 길이가 a, 세로의 길이가 b인 직사각형 형태를 출력 시키는 문제입니다.
어떤 알고리즘으로 해결하시든 문제 자체는 정말 너무 쉽고 for문만 아셔도 바로 해결하실 수 있는 문제입니다.
제가 해결한 방법에 대해 설명드리도록 하겠습니다.
위의 작성한 코드에서 기본적으로 이미 작성되어있는 코드를 제외하고 제가 작성한 코드는 아래의 오직 한줄 뿐입니다.
console.log(("*".repeat(a)+"\n").repeat(b));
코드만 봐도 아마 바로 이 코드가 어떻게 작동하는지 감이 오실겁니다.
한줄의 코드를 여러줄로 나눠서 작성해 보겠습니다.
process.stdin.setEncoding('utf8');
process.stdin.on('data', data => {
const n = data.split(" ");
const a = Number(n[0]), b = Number(n[1]); // 가로 길이 : 5 / 세로 길이 : 3 일때
const row = "*".repeat(a)+"\n"; // "*****"
const result = row.repeat(b);
console.log(result); // "*****
// *****
// *****"
});
먼저 row라는 변수에 별문자 "*" 에 이름만 봐도 감이 오는 문자열을 원하는 횟수만큼 반복하여 만든 문자열을 반환하는 repeat()함수를 사용하여 repeat()함수안에 가로 길이인 a를 넣어 "*".repeat(a)를 하면 별문자를 a 수만큼 반복하면 원하는 가로길이만큼의 별 문자열이 만들어집니다.
그리고 그 문자열 뒤에 줄바꿈을 뜻하는 \n을 붙여줍니다.
그럼 변수 row는 예시와 같이 a(가로 길이)가 5일때 "*****\n", 즉 "*****(줄바꿈)" 이 됩니다.
그리고 완성된 row를 다시 repeat()함수에 세로 길이인 b를 넣어 row.repeat(b)를 하면 row에 있는 "*****\n"이 b의 횟수만큼 반복된 문자열 "*****\n*****\n*****\n", 즉,
*****
*****
*****
이 만들어집니다.
(장황한 설명보다 위의 여러줄로 풀어쓴 코드가 설명이 더 잘 되시리라 생각됩니다...)
도움이 되셨다면 공감, 댓글 부탁드립니다!
궁금하신 점이나 요청 사항은 언제든지 말씀 해주세요!
감사합니다.
'Developer > Algorithm' 카테고리의 다른 글
Programmers 프로그래머스 코딩테스트 연습 - 평균 구하기 (JavaScript) (0) | 2020.08.27 |
---|---|
Programmers 프로그래머스 코딩테스트 연습 - 행렬의 덧셈 (JavaScript) (0) | 2020.08.26 |
Programmers 프로그래머스 코딩테스트 연습 - 자릿수 더하기 (JavaScript) (0) | 2020.08.22 |
Programmers 프로그래머스 코딩테스트 연습 - 정수 제곱근 판별 (JavaScript) (0) | 2020.08.21 |
Programmers 프로그래머스 코딩테스트 연습 - 이상한 문자 만들기 (JavaScript) (0) | 2020.08.20 |
댓글