[문제 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 |