[문제 1] 아래의 형태로 출력하는 함수를 구현하시오.

[출력예시]
*
**
***
****
*****
더보기
[풀이]

function printStar(max) {
  for(let i = 0; i < max; i++){
    let star = "";
        
    for(let j = 0; j < i + 1; j++) {
	  star += '*';
    }
    console.log(star);
  }
};

printStar(5);

↑ 풀이방법 보기

 

[문제 2] 아래의 형태로 출력하는 함수를 구현하시오.

[출력예시]
*****
****
***
**
*
더보기
[풀이]

function printRevStar(max) {
  for(let i = 0; i < max; i++) {
    let star = "";
    
    for(let j = 0; j < max - i; j++) {
      star += '*';
    }
    console.log(star);
  }
}

printRevStar(5);

↑ 풀이방법 보기

 

[문제 3] 369게임이다. 아래와 같이 출력하는 함수를 작성하시오.

  • 1부터 파라미터로 전달된 숫자까지 반복하면서 조건이 충족되면 "짝"을 출력하고 그렇지 않은 경우 숫자를 출력
  • 박수를 총 몇번 쳤는지를 리턴하는 함수 "myGame(n)을 작성

※ 문자열은 그 자체가 배열로 인식됨

[출력예시]
1
2
짝(3) --> 1번
4
5
짝(6) --> 1번
7
8
짝(9) --> 1번
10
11
12
짝(13) --> 1번
14
15
.
.
.
28
짝(29) --> 1번
짝(30) --> 1번
짝(31) --> 1번
짝(32) --> 1번
짝짝(33) --> 2번
짝(34) --> 1번
짝(35) --> 1번
박수를 총 16번 쳤습니다.
더보기
[풀이]

function myGame(n) {
  // 박수를 총 몇번 쳣는지에 대한 합계 값
  let count = 0;

  // 현재 숫자(i)를 문자열로 변환함. 33 -> "33"
  // 문자열은 그 자체가 배열이므로 각 자리의 숫자를 의미하는 글자를 원소로 갖는 배열이 된다고 볼 수 있다.
  for(let i = 1; i <= n; i++) {
    const str = i + ""; // 숫자열을 문자열로 바꿀 떄 쓰는 꼼수

    // 출력할 문자열(숫자 or 박수)
    let say = "";
    // 박수를 몇번 치는지 카운트하는 변수
    let clap = 0;

    for(let j of str) {

      // 각 글자가 3,6,9 중의 하나라면?
      if(j == "3" || j == "6" || j == "9") {
        say += "짝";
        clap++;
      }
    }
    if(clap == 0) {
      console.log(i);
    } else {
      console.log("%s (%d) --> %d번", say, i , clap);
      count += clap;
    }
  }
  console.log("박수를 총 %d번 쳤습니다.", count);
}
myGame(35);

↑ 풀이방법 보기

 

[문제 4] 문제 1번을 재귀함수로 다시 구현하시오.

function printStar(max, current=1) {
    ~ 코드입력 ~
}

printStar(5);
[출력예시]
*
**
***
****
*****
더보기
[풀이]

function printStar(max, current=1) {
  
  // max는 최대 행의 수, current는 현재 행의 수를 의미하므로, 
  // 현재 행의 수가 최대 행보다 크다면 처리 중단을 위해 return 함
  if(current > max) {
    return;
  } else {
    // 한 줄을 출력하기 위한 코드 구성
    let star = "";
  
    for(let j = 0; j < current; j++) {
      star += "*";
    }
    console.log(star);
    // 재귀함수는 반복문을 대체한다
    printStar(max, current+1);
  }
}

printStar(5);

↑ 풀이방법 보기

 

[문제 5] 문제 2번을 재귀함수로 다시 구현하시오.

function printRevStar(max, current=1) {
    ~ 코드입력 ~
}

printRevStar(5);
[출력예시]
*****
****
***
**
*
더보기
[풀이]

function printRevStar(max, current=1) {
  if(current > max) {
    return;
  } else {
    let star = "";
  
    for(let j = 0; j < max-current+1; j++) {
      star += "*";
    }
    console.log(star);
    printRevStar(max, current+1);
  }
}
printRevStar(5);

↑ 풀이방법 보기

 

[문제 6] 재귀함수로 구구단 중 5단을 출력하시오.

[출력예시]
5 X 1 = 5
5 X 2 = 10
5 X 3 = 15
5 X 4 = 20
5 X 5 = 25
5 X 6 = 30
5 X 7 = 35
5 X 8 = 40
5 X 9 = 45
더보기
[풀이]

function gugu(level, depth=1) {
  if(depth > 9) {
    return;
  } else {
    console.log(`${level} X ${depth} = ${(level*depth)}`);
    gugu(level, depth+1);
  }
}
gugu(5);

↑ 풀이방법 보기

'국비수업 > JavaScript' 카테고리의 다른 글

[Javascript] 클래스  (0) 2022.02.11
[Javascript] 프로토타입  (0) 2022.02.10
[Javascript] 함수  (0) 2022.02.08
[Javascript] [연습문제] JSON 객체 실습  (0) 2022.02.07
[Javascript] JSON  (0) 2022.02.04

+ Recent posts