D.evelop [CS]/Algorithm
[Algorithm 019] JS - 직사각형 별찍기 (Level 01)
Danne
2021. 11. 5. 15:16
문제 출처 : 프로그래머스 prorammers - 직사각형 별찍기 (링크)
문제 설명
이 문제에는 표준 입력으로 두 개의 정수 n과 m이 주어집니다.
별(*) 문자를 이용해 가로의 길이가 n, 세로의 길이가 m인 직사각형 형태를 출력해보세요.
제한사항
- n과 m은 각각 1000 이하인 자연수입니다.
A. 내가 푼 답
process.stdin.setEncoding('utf8');
process.stdin.on('data', data => {
const n = data.split(" ");
const a = Number(n[0]), b = Number(n[1]);
let row = [];
let column = [];
for (let i = 0; i < a ; i++){
row.push('*')
}
for (let j = 0; j < b ; j++){
column.push(row.join(''))
}
console.log(column.join(`\n`))
});
아주 기본적으로
1. '별을 a수 만큼' 배열에 나열
2. 값을 합침 (join 메서드)
3. '그 배열을 b수 만큼'나열
4. 값을 합침 (join 메서드 + 템플릿 레터럴 + 줄바꿈)
이렇게 생각하고 접근했다.
B. 다른 사람이 푼 답
process.stdin.setEncoding('utf8');
process.stdin.on('data', data => {
const n = data.split(" ");
const a = Number(n[0]), b = Number(n[1]);
const star = `${"*".repeat(a)}\n`;
console.log(star.repeat(b));
});
repeat()메서드와 정규식, 템플릿 메서드를 활용한 풀이.
string.repeat(count) : 현재 문자열을 주어진 횟수만큼 반복해 붙인 새로운 문자열 (MDN 명세)
무슨 의미인지 모르고, 이유도 모르겠지만 정확성 체킹은 내 로직이 더 빠르다🤓
🛠 약간 삽질 한 부분
• 아무리 봐도 값이 같은데, 테스트 패스가 안되서 확인하니 return이 아니라 console.log() 로 출력해야했다.
• 문제에는 '별(*) 문자를 이용해'라고 적혀있었지만, 출력이 '★' 얘처럼 보여서 이 문자로 사용하다가 시간 낭비함.
🐙 github 🐈⬛ https://github.com/kangdanne/algorithm_javascript/blob/master/programmers/level_01/01.js
반응형