본문 바로가기
D.evelop [CS]/Algorithm

[Algorithm 019] JS - 직사각형 별찍기 (Level 01)

by Danne 2021. 11. 5.

문제 출처 : 프로그래머스 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

 

 

 

 

반응형

댓글