
문뜩 기초가 부족하다는 느낌을 받고 부랴부랴 예전 자바스크립트 문제를 꺼내 풀었다.
내게는 너무 어려웠던 자바스크립트를 이용하여 피라미드를 만드는 문제..
천천히 다시한번 풀어보자
function pyramid(num) {
}
pyramid라는 함수에 num을 받고 해당하는 숫자만큼 피라미드를 만들어 보자.
예를들어 num = 3 일 경우에는,
*
***
***** 과 같은 모양의 피라미드가 나와야 한다.
위의 문제를 풀기 위해서는 for문으로 접근해야한다.
function pyramid(num) {
var result = ""
for(var i=1; i<=num; i++){
// 공백 문자열 생성
var spaces = ' '.repeat(num - i)
// 별표 문자열 생성
var stars = '*'.repeat(i * 2 - 1)
}
}
별 모양의 왼쪽에는 공백이 존재한다. 두칸 이상의 공백은   라는 걸 사용한다.
또한 .repeat 는 반복하는 코드이다
var str1 = 'abc';
console.log(str1.repeat(3)); // 'abcabcabc'
다시 돌아와 * 왼쪽의 공백의 수를 결정하는 spaces는
function pyramid(num) {
var result = ""
for(var i=1; i<=num; i++){
// 공백 문자열 생성
var spaces = ' '.repeat(num - i)
// 별표 문자열 생성
var stars = '*'.repeat(i * 2 - 1)
}
}
num = 3 일 경우에 첫번째 줄 별의 왼쪽 공백의 수는 2,
두번째 줄의 별의 왼쪽 공백수는 1,
세번째 줄은 0이 된다.
그러므로 공백은 num - i 로 지정해줬다.
비슷한 원리로 별의 수는 num = 1 일 경우에 1개
num = 2 일 경우에 3개 , num = 3일 경우에 5개이다.
2n - 1 로 올라 가는 것을 확인했고 num을 넣으려고 했으나
num 은 고정 값이여서 반복문에서는 계속 같은 값을 내보내기에
num 대신에 i를 연산에 넣어줬다.
상당히 기초적인 문제였지만 공부와 너무 담을 쌓고 살아서인지 쉽게 생각나지는 않았다
어쨌든 결국 i로 계산을 해줬다.
마지막으로 result 라는 빈 객체에 spaces 와 starts 를 더해줬고 추가로 줄 바꿈을 하기 위해 <br>을 써줬다.
또한 console.log(result)로 간단히 해결 되는 문제가 아니라
해당문제는 html로 새로 write를 해줘야 하는 문제여서
document.write(result) 로 return 해줬다.
function pyramid(num) {
// 결과를 저장할 변수 초기화
var result = '';
// 입력된 숫자에 따라 피라미드 형태의 문자열 생성
for (var i = 1; i <= num; i++) {
// 공백 문자열 생성
var spaces = ' '.repeat(num - i)
// 별표 문자열 생성
var stars = '*'.repeat(i * 2 - 1)
// 결과 문자열에 공백과 별표를 결합하여 추가
result += spaces + stars + '<br>';
}
// 결과 문자열 반환
return document.write(result);
}
오랜만에 자바스크립트 문제를 풀어보며 첫 블로그를 시작했다.
이유는 현재 React를 배우고 웹사이트 서비스를 제작하고 있지만 어딘가 머리가 텅텅 빈 느낌이 들었다.
현 시점 chat gpt나 구글링이 너무나 잘 되어있어 쉽게 정답을 찾을 수 있어서 인지
실질적으로 내 머리로 이런 간단한 문제를 풀기가 쉽지 않다는 걸 느꼈다.
이번 자바스크립트 기초 문제를 시작으로 기초적인 부분을 더 꽉 채워야 겠다는 생각이 들었다.
모르는 건 부끄러운 것이 아니지만 너무 부끄러웠다.
그치만 모른다는 걸 알면서 계속 모르는 척 하는 겁쟁이가 되고 싶지는 않다.
'Coding Test' 카테고리의 다른 글
| 6. Top K Frequent Elements (0) | 2025.06.13 |
|---|---|
| 5. Group Anagrams (0) | 2025.06.12 |
| 3. Valid Anagram (0) | 2025.06.11 |
| 2. Best Time to Buy and Sell Stock (0) | 2025.06.11 |
| 1. Two Sum (1) | 2025.06.09 |