Coding Test

피라미드 만들기

jimmmy_jin 2023. 4. 13. 00:52

문뜩 기초가 부족하다는 느낌을 받고 부랴부랴 예전 자바스크립트 문제를 꺼내 풀었다.

내게는 너무 어려웠던 자바스크립트를 이용하여 피라미드를 만드는 문제..

천천히 다시한번 풀어보자

 

function pyramid(num) {

}

pyramid라는 함수에 num을 받고 해당하는 숫자만큼 피라미드를 만들어 보자.
예를들어 num = 3 일 경우에는,
   *

 ***

*****   과 같은 모양의 피라미드가 나와야 한다. 

위의 문제를 풀기 위해서는 for문으로 접근해야한다.

 

function pyramid(num) {
	var result = ""
    for(var i=1; i<=num; i++){
    		// 공백 문자열 생성
   		var spaces = '&nbsp'.repeat(num - i)

   		// 별표 문자열 생성
   		var stars = '*'.repeat(i * 2 - 1)
    }
}

별 모양의 왼쪽에는 공백이 존재한다. 두칸 이상의 공백은 &nbsp 라는 걸 사용한다.

또한 .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 = '&nbsp'.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 = '&nbsp'.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