✏️기록하는 즐거움
article thumbnail

Link

 

2522번: 별 찍기 - 12

첫째 줄부터 2×N-1번째 줄까지 차례대로 별을 출력한다.

www.acmicpc.net

 

문제

예제를 보고 규칙을 유추한 뒤에 별을 찍어 보세요.

입력 > 첫째 줄에 N(1 ≤ N ≤ 100)이 주어진다.
출력 > 첫째 줄부터 2×N-1번째 줄까지 차례대로 별을 출력한다.

| 예제 입력

3

| 예제 출력

  *
 **
***
 **
  *

 

제출

const fs = require("fs");

const input = Number(
  process.platform === "linux" ? fs.readFileSync("/dev/stdin").toString() : `3`
);

let result1 = [];
let result2 = [];

for (let i = 1; i <= input; i++) {
  result1.push(" ".repeat(input - i) + "*".repeat(i));
}

result2 = result1.slice().reverse().slice(1);

console.log(result1.concat(result2).join("\n"));

 

풀이과정

이번 문제는 다른 분의 풀이를 보고 풀어본 문제!

중심을 기준으로 상하 반전이기 때문에 반복될 부분은 for문을 사용하여 배열에 저장하고,

나머지 부분은 저장한 배열을 뒤집어서 기존 배열과 합쳐준다.

 

reverse()를 사용하면 원본 배열이 변경되기 때문에 slice()로 얕은 복사를 해줘야한다.

 

개념

String.prototype.repeat()

  • 문자열을 지정한 횟수만큼 반복해 새로운 문자열을 반환한다.
  • 반복 횟수는 0보다 큰 양의 정수이며, 최대 문자열 크기를 넘으면 RangeError 발생

Array.prototype.slice()

  • 배열에서 괄호 안에 지정한 시작점부터 끝지점까지 복사하여 새로운 배열 객체를 반환한다.
  • 원본 배열은 바뀌지 않는다.
  • 매개변수
    • 첫 번째 인자 : begin
      • 잘라내기 할 시작점
      • begin이 undefined인 경우, 0번 인덱스부터 slice 된다.
      • begin이 배열의 길이보다 클 경우 빈 배열이 반환된다.
    • 두 번째 인자 : end
      • 잘라내기를 끝낼 종료지점
      • end 인덱스는 제외하고 추출된다.
      • ex) arr.slice(1,4) 의 경우, arr[1]~arr[3]까지 추출
      • end가 생략될 경우 배열의 끝까지 slice 된다.

Array.prototype.reverse()

  • 배열의 순서를 반전한다.
  • 마지막 요소는 첫 번째 요소가 되고, 첫 번째 요소는 마지막 요소가 된다.

Array.prototype.concat()

  • 매개변수에 있는 배열 또는 값을 호출한 배열 뒤에 순서대로 붙여 새로운 배열을 반환한다.

 

유사한 문제

 

[백준] 2440: 별 찍기 - 3 (javascript)

Link 2440번: 별 찍기 - 3 첫째 줄에는 별 N개, 둘째 줄에는 별 N-1개, ..., N번째 줄에는 별 1개를 찍는 문제 www.acmicpc.net 문제 첫째 줄에는 별 N개, 둘째 줄에는 별 N-1개, ..., N번째 줄에는 별 1개를 찍는

codingmyoni.tistory.com

 

[백준] 2441: 별 찍기 - 4 (javascript)

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

codingmyoni.tistory.com

 

 

 

[백준] 2442: 별 찍기 - 5 (javascript)

Link 2442번: 별 찍기 - 5 첫째 줄에는 별 1개, 둘째 줄에는 별 3개, ..., N번째 줄에는 별 2×N-1개를 찍는 문제 별은 가운데를 기준으로 대칭이어야 한다. www.acmicpc.net 문제 첫째 줄에는 별 1개, 둘째 줄

codingmyoni.tistory.com

 

 

[백준] 2445: 별 찍기 - 8 (javascript)

Link 2445번: 별 찍기 - 8 첫째 줄부터 2×N-1번째 줄까지 차례대로 별을 출력한다. www.acmicpc.net 문제 예제를 보고 규칙을 유추한 뒤에 별을 찍어 보세요. 입력 > 첫째 줄에 N(1 ≤ N ≤ 100)이 주어진다.

codingmyoni.tistory.com


Comment

 

profile

✏️기록하는 즐거움

@nor_coding

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!