코딩테스트(JavaScript) 프로그래머스 : 직사각형 별찍기

Parkboss·2022년 8월 5일
0

코딩테스트

목록 보기
2/19

✅문제

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

❕ 제한사항

n과 m은 각각 1000 이하인 자연수입니다.

📢 입출력 예제

문제를 풀지 못했다!

💻 다른 사람 풀이

process.stdin.setEncoding('utf8');
process.stdin.on('data', data => { // 입력받은 숫자를 'data에 받는다'
    const n = data.split(" "); // data(입력받은 숫자)를 배열로 변경
    const a = Number(n[0]), b = Number(n[1]); // a는 한줄에 대한 별의 갯수, b는 몇줄 출력
    const row = '*'.repeat(a)
    for(let i =0; i < b; i++){
        console.log(row)
    }
  • String.repeat() : 문자열을 반복한 값을 반환하는 함수

repeat을 사용하여 간단하게 풀수있는 문제였다.
아래 영상이 문제 풀이에 도움이 되었다

💻 유튜브 별찍기 반복문 연습 문제 풀이

1. 별찍기 문제

*
**
***
****
*****

for(let star = 1; star <= 5; star +=1) {
console.log('*'.repeat(star));
}

2. 별찍기 문제

*****
****
***
**
*

for(let star = 5; star >= 1; star -= 1) {
console.log('*".repeat(star));
}

3. 별찍기 문제 (등차수열, 개차수열)

**********
********
******
****
**

for(let star = 10; star >= 2; star -= 2) {
console.log('*'.repeat(star));
}

4. 별찍기 문제

*
**
****
********
****************

for(let star = 1; star <= 16; star *= 2) {
console.log('*'.repeat(star));
}

5. 별찍기 문제

*****
 ****
  ***
   **
    *
    
 for(let star = 5; star >= 1; star -= 1) {
 console.log(' '.repeat(5 - star) + '*'.repeat(star));
 }

6. 별찍기 문제

*********
 *******
  *****
   ***
    *
    
for(let star =9; star >= 1; star -= 2) {
console.log(' '.repeat((9 - star) / 2 )+ '*'.repeat(star));
}

나누기 2를 해야 0, 1, 2, 3, 4의 ' ' 빈 문자열만큼 띄어진다

6. 별찍기 문제

*
**
***
****
*****

for(let star = 0; star < 5; star += 1) {
console.log('*' .repeat(star + 1))
}

보통 초깃값을 0으로 두기 때문에 star를 출력하면 별이 0부터 시작한다.
그래서 star + 1을 주면 * 1 값부터 시작한다.
또는 초깃값을 1로 시작한다.

7. 마름모꼴 별찍기 문제

  *  
 ***
*****
 ***
  *
  
for(let i = 0; i <= 4; i++) {
console.log(' '.repeat(Math.abs(i-2)) + '*'.repeat(5-Math.abs(2*(i-2))));
}

이 문제도 결국 풀지 못해 풀이 중에 가장 이해가 잘 되는 풀이를 가져왔다.

Math.abs(): 함수는 주어진 숫자의 절대값을 반환합니다.
x가 양수이거나 0이라면x를 리턴하고,x가 음수라면 x의 반대값, 즉 양수를 반환합니다.

Math.abs('-1');     // 1
Math.abs(-2);       // 2
Math.abs(null);     // 0
Math.abs('');       // 0
Math.abs([]);       // 0
Math.abs([2]);      // 2
Math.abs([1,2]);    // NaN
Math.abs({});       // NaN
Math.abs('string'); // NaN
Math.abs();         // NaN
profile
ur gonna figure it out. just like always have.

0개의 댓글