Lesson 1. 사각형 별 출력
반복되는 구조를 파악하고 묶으면 다중 for문을 만들 수 있다
***
***
***
코드 출력 방법
가로로 3번 반복되는 별이 세로로 3번씩 반복되고 있는 걸 발견할 수 있다
n을 입력했을 때 n*n의 사이즈로 별이 출력되는 걸 만들어보자
1. 먼저 가로줄에서 n개의 별이 찍혀야하고,
2. 이것이 세로로 n번 반복되어야 한다.
따라서 다음과 같은 코드를 사용할 수 있다
const fs = require("fs");
let input = fs.readFileSync(0).toString().trim();
let n = Number(input);
result = "";
for (let i=0; i<n; i++){
for (let j=0; j<n; j++){
result += ('*' + "");
}
result += ("\n");
}
console.log(result);
i j k와 같은 순서로 for문의 변수를 이용하는 경우가 많은데
특히 i와 j는 생김새가 같아 문제를 일으키는 경우가 많으니 주의하자
복붙하다가 i와 j를 바꾸지 않는 경우가 다반사다
문제 중 하나
N=3일 때
*
***
*****
N=5일 때
*
***
*****
*******
*********
다음과 같이 찍히도록 반복문을 짜는 문제
관짜는 줄 알았다
머리터지는 줄
별찍기에 막히다니. . . . . . .
1+ i*2개씩 늘어난다는 점을 이용해서 코드를 짜보았다
const fs = require("fs");
let n = Number(fs.readFileSync(0).toString().trim());
let str = "";
for (let i=0; i<n; i++){ //n개의 줄을 반복한다
str = "";
str += "*";
for (let j=0; j<i*2; j++)
str += "*";
console.log(str);
}
해설을 보았는데, 별의 개수가 2*i+1점을 찾은 게 맞았다
다만 나는 1개를 먼저 찍고, 2*i개를 따로 찍었다면
해설에서는 쉽게 2*i+1개를 찍었다
쫄지말고 푸는 게 중요한 것 같다
Lesson 2. 행에 대해 대칭인 별 출력
// 변수 선언 및 입력
const fs = require("fs");
let n = Number(fs.readFileSync(0).toString().trim());
let str = "";
// 길이가 n인 직각삼각형을 출력합니다.
for (let i = 0; i < n; i++) {
str = "";
for (let j = 0; j <= i; j++) {
str += "* ";
}
console.log(str);
}
// 길이가 n-1인 직각삼각형을 뒤집어 출력합니다.
for (let i = n - 2; i >= 0; i--) {
str = "";
for (let j = 0; j <= i; j++) {
str += "* ";
}
console.log(str);
}
대칭인 별 문제는 위와 같이 위쪽 부분과 아래쪽 부분을 나눠서 출력하면 된다
위 코드는 n-1인 직각삼각형을 '뒤집어' 출력한다는 부분이 특히 마음에 들어 가져온 기본 문제다
'개인공부 > 코드트리 JS' 카테고리의 다른 글
자바스크립트 Chapter 5. 단순 반복 (0) | 2025.05.10 |
---|---|
자바스크립트 Chapter 4. 조건문 (0) | 2025.05.06 |
자바스크립트 Chapter 3. 연산자 (0) | 2025.04.29 |
자바스크립트 Chapter 2. 입출력 (0) | 2025.04.29 |
자바스크립트 Chapter 1. 기본 출력 (0) | 2025.03.04 |