Algorithm/Baekjoon(Node.js)
[JavaSrcipt] Baekjoon - 2439 : 별 찍기 - 2 (문자열 자르기)
비망노트
2021. 8. 28. 19:34
문제
첫째 줄에는 별 1개, 둘째 줄에는 별 2개, N번째 줄에는 별 N개를 찍는 문제
하지만, 오른쪽을 기준으로 정렬한 별(예제 참고)을 출력하시오.
입력
첫째 줄에 N(1 ≤ N ≤ 100)이 주어진다.
출력
첫째 줄부터 N번째 줄까지 차례대로 별을 출력한다.
예제입력 | 예제출력 |
5 | * ** *** **** ***** |
❌ 풀이과정
오른쪽을 기준으로 출력된다길래 정렬부터 문자열자르기까지 찾아봤었다.
var n = require('fs').readFileSync('/dev/stdin').toString().trim();
let answer = '';
for(let i=1;i<=n;i++){
answer += '*'.repeat(n);
console.log(answer.substr(-i,i));
};
그래서 이렇게 n갯수만큼 *을 다 받고 -i 에서부터 i개만큼 출력하는 방식을 생각해봤는데
이러면 오른쪽에 나오는게아니라 해당 시작값(-i)에서 i개만큼 그냥 출력이되는거였다.
✅ 문자열자르기 예제
var str = 'abcdefghij';
str.substr(1, 2) // 'bc'
str.substr(-3, 2) // 'hi'
str.substr(-3) // 'hij'
str.substr(1) // 'bcdefghij'
var anyString = 'Mozilla';
// Displays 'M'
console.log(anyString.substring(0, 1));
console.log(anyString.substring(1, 0));
// Displays 'Mozill'
console.log(anyString.substring(0, 6));
// Displays 'lla'
console.log(anyString.substring(4));
console.log(anyString.substring(4, 7));
console.log(anyString.substring(7, 4));
// Displays 'Mozilla'
console.log(anyString.substring(0, 7));
console.log(anyString.substring(0, 10));
문자열자르기를 활용하는 문제는 아니었지만 알아두어 나쁠것같진않다.
⭕ 내 풀이
var n = require('fs').readFileSync('/dev/stdin').toString().trim();
for(let i=1;i<=n;i++){
console.log(' '.repeat(n-i) + '*'.repeat(i));
};
결국 구글링을 해보니 이렇게 공백을 따로 출력해주어야하는문제였다.
-출처
https://www.acmicpc.net/problem/2439
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/String/substr
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/String/substring