programmers 코딩테스트 :직사각형 별찍기

H·2022년 4월 4일
0

Coding Test

목록 보기
1/26

🔔직사각형 별찍기

📢 이 문제에는 표준 입력으로 두 개의 정수 n과 m이 주어집니다.
별(*) 문자를 이용해 가로의 길이가 n, 세로의 길이가 m인 직사각형 형태를 출력해보세요.

⛔ 제한 조건
n과 m은 각각 1000 이하인 자연수입니다.


  1. '\n'은 줄 바꿈 표시
  2. a는 별의 개수, b는 줄의 개수

🔠 첫번째 풀이

  process.stdin.setEncoding('utf8');
  process.stdin.on('data', data => {
      const n = data.split(" ");
      const a = Number(n[0]), b = Number(n[1]);

      let result = "";

      for(let j = 0; j <b; j++ ){
          for(let i = 0;  i < a; i++){
              result += "*"
          }    
          result += '\n'
      }
      console.log(result)
  });

🍀 피드백

📌 줄바꿈
📌 중첩 for문을 사용하면 a, b에 들어가는 숫자가 곱해진 만큼 돌아가기 때문에 비효울적임


🔠 두번째 풀이

  process.stdin.setEncoding('utf8');
  process.stdin.on('data', data => {
      const n = data.split(" ");
      const a = Number(n[0]), b = Number(n[1]);
      let result = "";
      for(let i = 0; i< a; i++){
          result += '*';
      } 
      for(let j = 0; j<b; j++){
          console.log(result)
      }
  });

🍀피드백

📌 이렇게도 되긴하지만, console.log()로는 부족해 피드백을 더 받았다


🔠 세번째 풀이

process.stdin.setEncoding('utf8');
process.stdin.on('data', data => {
    const n = data.split(" ");
    const a = Number(n[0]), b = Number(n[1]);
    let result = "";
    let star = '';
    for(let i = 0; i< a; i++){
        result += '*';
    } 
    for(let j = 0; j<b; j++){
        star +=  result + '\n'
    }
    console.log(star)
});

🍀 피드백 & 아쉬운 점

📌 변수 개념이 조금 부족하다
📌 다음에는 시간 좀 더 빠르게 작업하기
📌 왜 변수를 두가지 설정해서 star에 result와 줄바꿈을 넣어줄 생각을 하지 못했을까?


번외 (조건까지 확인하는 경우)

let star = '';
let result = '';

for (let i = 0; i < a; i++) {
  star += '*';
}
for (let i = 0; i < b; i++) {
  result += (result.length > 0 ? '\n' + '') + star;
}

console.log(result);
profile
🤘 돌머리도 ROCK이다! 🤘

0개의 댓글