알고리즘

[Programmars] 직사각형 별찍기 (JavaScript)

프린벼르 2022. 2. 4. 16:08

직사각형 별찍기 문제

1. 나의 생각 흐름

처음에는 repeat을 사용해서 *을 찍어내려고 했다. 그런데 높이값이라 해야하나 몇 줄을 출력하는지 이 부분을 잘 구현을 못하겠어서ㅠㅠ 어쩔 수 없이 이중for문으로 답을 도출해냈다.

2. 나의 코드 정리

process.stdin.setEncoding('utf8');
process.stdin.on('data', data => {
    const n = data.split(" "); //띄어쓰기를 기준으로 나눠주기
    const a = Number(n[0]), b = Number(n[1]); 
    //우선 이렇게 만들면 b줄을 출력하는 코드를 만들 수 있다(""을써서 초기화해줌..)
    for(let i = 0; i < b; i++){ // i를 선언해주고 몇 줄(b)만큼 반복
        let str = ""; // 출력할 변수를 선언해주기
        for(let j = 0; j < a; j++){ // j 선언 후 별을 한줄에 몇개 찍을지 반복
            str += "*" //출력할 변수에 별을 담기
        } 
    console.log(str) //출력ㄱㄱ(콘솔로그가 개행해주니깐 줄바꿈이 일어나서 반복가능)
    }
});
번외편)
for(let i = 0;  i < 5;  i++){
	let str = ""; }//빈문자열을 씀으로써 초기화해줌
 //우선 이렇게 만들면 5줄을 출력하는 코드를 만들 수 있다(콘솔로그가 개행을 해주니까 가능)

 

 

for(let i = 0; i < 5; i++){
  let str = "";// 몇 줄인지를 결정하는 부분

  for(let j = 0; j <= i; j++){
    str = str + "*";
  }// 각 줄당 별의 개수를 조절하는 부분

  console.log(str); //출력 ㄱㄱ
}

 

3. 다른 사람들의 코드

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

이 코드가 내가 구현하고 싶었던 코드였다. repeat()을 써서 처음에 코드를 짰는데 몇줄을 어떻게 나타내지.. 이러면서 지우기를 반복했었는데..!! 이렇게 풀 수 있다는거 절대 잊지말기!!!!

4. 결론

repeat()메소드 다시 한 번 공부하기!!