TIL_170927 Control Flow - Algorithm 제어문을 활용한 알고리즘

알고리즘 퀴즈

1.for문을 사용하여 0부터 10미만의 정수 중에서 짝수만을 작은 수부터 출력하시오.

1
2
3
4
5
for (var i = 0; i < 10; i++) {
if (i % 2 == 0) {
console.log(i);
}
}

2.for문을 사용하여 0부터 10미만의 정수 중에서 짝수만을 작은 수부터 문자열로 출력하시오.

1
2
3
4
5
for (var i = 0; i < 10; i++) {
if (i % 2 == 0) {
console.log(i + '');
}
}

3. for문을 사용하여 0부터 10미만의 정수 중에서 홀수만을 큰수부터 출력하시오.

1
2
3
4
5
for (i = 9; i > 0; i--) {
if (i % 2 == 1) {
console.log(i);
}
}

4. while문을 사용하여 0 부터 10 까지 정수 중에서 짝수만을 작은 수부터 출력하시오.

1
2
3
4
5
6
7
var i = 0;
while (i <= 10) {
if (i % 2 == 0) {
console.log(i);
}
i++;
}

5. while문을 사용하여 0부터 10미만의 정수 중에서 홀수만을 큰수부터 출력하시오.

1
2
3
4
5
6
7
var i = 9;
while (i >= 0) {
if (i % 2 == 1) {
console.log(i);
}
i--;
}

6. for 문을 사용하여 0 부터 10 미만의 정수의 합을 출력하시오

1
2
3
4
5
6
7
var i = 0;
var sum = 0;
while (i < 10) {
sum += i;
i++;
}
console.log('총합은:' + sum);

7. 1부터 20까지의 정수 중에서 2 또는 3의 배수가 아닌 수의 총합을 구하시오

1
2
3
4
5
6
7
var sum = 0;
for (i = 1; i <= 20; i++) {
if (i % 2 == 0 || i % 3 == 0) continue; {
sum += i;
}
}
console.log('총합은:' + sum);

8. 1부터 20까지의 정수 중에서 2 또는 3의 배수인 수의 총합을 구하시오

1
2
3
4
5
6
7
8
var sum = 0;
for (i = 1; i <= 20; i++) {
if (i % 2 == 0 || i % 3 == 0) {
sum += i;
}
}
console.log('총합은:' + sum);
`

9. 두 개의 주사위를 던졌을 때, 눈의 합이 6 이 되는 모든 경우의 수를 출력하시오

1
2
3
4
5
6
7
8
for (i = 1; i <= 6; i++) {
for (j = 1; j <= 6; j++) {
sum == i + j;
if (i + j == 6) {
console.log('[' + i + ',' + j + ']')
}
}
}

10. 삼각형출력,문자열로 완성하라. 개행문자를 사용하여 개행한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// var sum = '';
// for (i = 1; i <= 5; i++) {
// sum += '*';
// console.log(sum);
// }
/* 개행으로 하는 방법*/
var star = '';
for (var i = 1; i < 6; i++) {
for (var j = 1; j < i + 1; j++) {
star += '*';
}
star += '\n';
}
console.log(star);
/* 함수를 사용하는 방법*/
// for (i = 1; i <= 5; i++) {
// console.log('*'.repeat(i));
// }
////////////////////////

11. 삼각형출력 3줄 + 5줄

1
2
3
4
5
6
7
8
9
10
var starCount = '';
var starSum = '';
for (var i = 1; i <= 5; i++) {
starCount += '*';
starSum += starCount + '\n';
if (i === 3) {
console.log(starSum);
}
}
console.log(starSum);

12. 정삼각형 (5줄)

1
2
3
4
5
6
7
8
9
10
11
12
var result = '';
for (var a = 1; a <= 5; a++) {
var star = '';
for (var i = 5; i > a; i--) {
star += ' ';
}
for (var s = 0; s < (2 * a - 1); s++) {
star += '*';
}
result += star + '\n';
}
console.log(result);

13. 역정삼각형

1
2
3
4
5
6
7
8
9
10
for (var a = 1; a <= 5; a++) {
var star = '';
for (var i = 1; i < a; i++) {
star += ' ';
}
for (var s = 9; s >= (2 * a - 1); s--) {
star += '*';
}
console.log(star);
}

오늘의 느낀점

  • ‘아는 것과 설명할 수 있는 것은 다르다’ 는 말을 실감
  • 눈으로만 익혀서 안다고 생각했는데 한차례 내 생각으로 풀어나가는 것에 대해 어려움을 느꼈다
  • 돌아가며 자신의 풀이방법을 설명하는데, 비슷한것도 있지만 정말 다르게 생각한 사람들도 있어서 놀라울따름!
  • 코딩은 정말 개발자가 어떤식으로 생각하느냐가 그대로 나타나는 것 같다 (11번을 문제에서 더 길어질 경우를 대비한 퍼포먼스성?을 하나도 염두에 두지 않고 나는 마냥 가볍게 풀려고 했는데 다른이는 그런걸 염두에 두더라;)