2439 별 찍기 -2
https://www.acmicpc.net/problem/2439
문제
- 첫째 줄에는 별 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 |
댓글