본문 바로가기
알고리즘 스터디/[프로그래머스] 연습문제

[알고리즘] 직사각형 별찍기 문제 풀이(자바스크립트 javascript)

by 제니운 2022. 7. 15.
728x90

n과 m이 주어졌을 때 별(*) 문자를 이용해 가로의 길이가 n, 세로의 길이가 m인 직사각형 형태를 출력하는 첫 번째 알고리즘 문제풀이이다.

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

 

기존에 제시된 내용을 보면 위와 같다!

 

const 가 뭔지 몰라서 찾아봤는데

 

const = "상수". 영어로는 constant, 같은 값이 계속 유지된다는 뜻이다.

 

(문제 풀이 생각)

1. 예시에 입력을 5로 했는데, 별 문자 *이 가로로 5개가 "반복" 됐으니까, 문자열을 반복하자!

2. 반복문을 써서 세 번을 세로로 내리자!

 

✅ 최종 코드!

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

 

const row = '*'.repeat(a)

 

위 내용처럼 const row로 row의 값을 "상수"로 해주었다.

const row = a 라고 주게 되면 a라는 값을 가지게 되니까, 별 문자 *을 a 값만큼 반복해! 라고 풀이한 의미이고

 

for(let i=0, i<b; i++)

 

예제를 보면 b는 3인데, 숫자로만 생각하니까 i<b로 하면 2까지 밖에 산출이 안되잖아? 이렇게 문과식으로 생각을 했는데, 오류는 이건 컴퓨터 숫자라는 것!

즉, 컴퓨터는 0부터 숫자가 시작이 되니까 

 

let i=0; i<b; i++

 

이렇게 써주면, 0부터 b값 3 미만인 2까지 반복된다는 것이고 0~2는 세 번의 반복이 이루어진다는 의미가 된다.

 

 

✅ 팀원의 다른 코드

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

    console.log(star(a,b));
    function star(num1,num2){
    let star = '';
    for(let i=0; i<num2; i++){
        star+='*';
        for(let j=1; j<num1; j++){
            star+='*';
        }
        star+='\n';
    }
    return star;
}
});

 

 

 

통과 완료!

728x90