[JS] 2439 별 찍기 -2 -padStart/삼항연산자/join

    2439 별 찍기 -2

    https://www.acmicpc.net/problem/2439

     

    2439번: 별 찍기 - 2

    첫째 줄에는 별 1개, 둘째 줄에는 별 2개, N번째 줄에는 별 N개를 찍는 문제 하지만, 오른쪽을 기준으로 정렬한 별(예제 참고)을 출력하시오.

    www.acmicpc.net

    문제

    • 첫째 줄에는 별 1개, 둘째 줄에는 별 2개, N번째 줄에는 별 N개를 찍는 문제
    • 하지만, 오른쪽을 기준으로 정렬한 별(예제 참고)을 출력하시오.
    • 첫째 줄에 N(1 ≤ N ≤ 100)이 주어진다.
    • 첫째 줄부터 N번째 줄까지 차례대로 별을 출력한다.

    풀이

    • padstart 이용하여 문제 풀기.
    const fs = require('fs');
    const inputData = fs.readFileSync(0,'utf8').toString()
    const n = parseInt(inputData) // N값을 받음
    
    // const n = 5;
    // const strings = ['*','**','***','****','*****']
    
    result = '';
    
    for(let i = 1 ; i < n+1 ; i++){
        for(let j = 1 ; j <= i;j++){
            result += '*'; // 순회하면서 '*'이 누적된다.
        }  
    
        result += "\n"   //한 줄씩 엔터값을 준다 
    }
    
    let arr = result.split('\n') //map을 사용하기 위해 string을 array로 바꿔준다. -> \n을 기준으로 나눈다
    arr = arr.slice(0,-1); // 마지막 줄에 항상 엔터값이 남기때문에 마지막 엔터값을 제거해준다.
    
    const longestLength = arr.map(value => value.length)[n-1]; //5 -> 가장 길이간 긴 value을 끄집어 낸 다음
    
    // padStart을 사용하여 오른쪽 정렬을 만족시키기 위해 공백을 채워준다.
    arr.forEach(value => console.log(value.padStart(longestLength))); // 목표 길이를 가장 긴 길이인 5(longestLength)로 두고 시작점부터 공백을 채워 목표길이를 채워준다.

     

    다른 풀이

    • 삼항 연산자를 이용하여 풀기
    let num = 5
    for (let i = 0; i < num; i++) {
      let star = '';
    
      for (let j = num - 1; j >= 0; j--) { // j는 하나씩 작아짐
        star += j <= i ? '*' : ' ';
      }
    
    
      console.log(star);
    }

    j = 4일때 i가 4가 될때까지 star에 공백을 채워주고 4가 되면 를 넣어준다. -> ___*

    j = 3일때 i가 4가 될때까지 star에 공백을 채워주고 4가 되면 를 넣어준다. -> __**

    j = 2일때 i가 4가 될때까지 star에 공백을 채워주고 4가 되면 를 넣어준다. -> __***
    j = 1일때 i가 4가 될때까지 star에 공백을 채워주고 4가 되면 를 넣어준다. -> _****
    j = 0일때 i가 4가 될때까지 star에 공백을 채워주고 4가 되면 를 넣어준다. -> *****

    • 삼항 연산자
    let result = true ? 1 : 100; // ? 앞에 true이면 1를 result에게 돌려주겠다.
    console.log(result) // 1
    
    let result2 = true ? console.log("one") : console.log("two")
    console.log(result2)// one
    
    let result3 = false ? console.log("one") : console.log("two")
    console.log(result3)// two
    • join을 사용하기
    let n = 5
    
    let arr = new Array(n).fill(' '); // n번까지 공백 채운 array 만들기
    
    for (let i = n - 1; i >= 0; i--) {
      arr[i] = '*'; //i가 하나씩 작아지면서 마지막 값부터 *를 넣어준다
    
      console.log(arr.join('')); // 한 줄씩 전체 array를 합치면서 출력한다.
    }

    'algorithm > 백준' 카테고리의 다른 글

    [JS] 2588번 곱셈  (0) 2022.08.22
    [JS] 10871 X보다 작은 수 reduce/for  (0) 2022.08.22
    [JS] 2438 별 찍기-1  (0) 2022.08.22
    [JS] 11022번 A+N -8  (0) 2022.08.22
    [JS] 11021 A+B-7  (0) 2022.08.22

    댓글