문제 출처 : 프로그래머스 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
반응형
'D.evelop [CS] > Algorithm' 카테고리의 다른 글
[Algorithm 021] JS - 행렬의 덧셈 (Level 01) (0) | 2021.11.08 |
---|---|
[Algorithm 020] JS - x만큼 간격이 있는 n개의 숫자 (Level 01) (0) | 2021.11.07 |
[Algorithm 018] JS - 완주하지 못한 선수 (Level 01) (0) | 2021.11.04 |
[Algorithm 017] JS - 숫자 문자열과 영단어 (2021 카카오 채용연계형 인턴십) (0) | 2021.11.03 |
[Algorithm 016] JS - Bubble Sort 버블정렬 (0) | 2021.11.02 |
댓글