“ 지연되는 프로젝트에 인력을 더 투입하면 오히려 더 늦어진다. ”
01. 다음의 결괏값을 작성하시오.
{
let i = 0;
let sum = 0;
while(i < 10){
i = i+1;
if( i % 3 == 0) sum -= i;
if( i % 3 == 1) sum += i;
if( i % 3 == 2) sum *= i
}
console.log(sum)
}
i | i % 3 == 0(-) | i % 3 == 1(+) | i % 3 == 2(*) | sum |
1 | +1 | 1 | ||
2 | *2 | 2 | ||
3 | -3 | -1 | ||
4 | +4 | 3 | ||
5 | *5 | 15 | ||
6 | -6 | 9 | ||
7 | +7 | 16 | ||
8 | *8 | 128 | ||
9 | -9 | 119 | ||
10 | +10 | 129 |
답 : 129
02. 다음의 결괏값을 작성하시오.
{
let num = [10, 20, 30, 40, 50];
let i, max, min;
max = min = num[0];
for(i=0; i<5; i++){
if(num[i] > max) max = num[i];
if(num[i] < min) min = num[i];
}
console.log(max, min);
}
답 : 50, 10
03. 다음의 결괏값을 작성하시오.
{
function func(begin, diff, n){
cnt = 1;
ret = begin;
while(true){
cnt += 1;
ret *= diff;
if(cnt == n) return ret;
}
}
console.log(func(1, 3, 4));
}
cnt | ret | 조건식 | 설명 | |
1 | 1 | 1 | 초기화 | |
2 | 2 | 3 | cnt == 4 | 3 = 1 x 3 |
3 | 3 | 9 | cnt == 4 | 9 = 3 x 3 |
4 | 4 | 27 | cnt == 4 | 27 = 9 x 3 (반환값) |
답 : 27
04. 다음의 결괏값을 작성하시오.
{
let i = 0;
let sum = 0;
while(i < 10){
i = i + 1;
if(i % 2 == 0){
continue
}
sum += i;
}
console.log(sum)
}
답 : 25
05. 다음의 결괏값을 작성하시오.
{
let num = [56, 4, 3, 65, 78];
let temp;
for(let i=0; i<1; i++){
for(let j=0; j<num.length-i-1; j++){
if(num[j]>num[j+1]){
temp = num[j];
num[j] = num[j+1];
num[j+1] = temp;
}
}
}
console.log(num)
}
반복문 | i | j | num[i] | num[j+1] | 비교여부 | 결과 |
1 | 0 | 0 | 56 | 4 | O | [4, 56, 3, 65, 78] |
1 | 0 | 1 | 56 | 3 | O | [4, 3, 56, 65, 78] |
1 | 0 | 2 | 56 | 65 | X | [4, 3, 56, 65, 78] |
1 | 0 | 3 | 65 | 78 | X | [4, 3, 56, 65, 78] |
2 | 0 | 0 | 4 | 3 | O | [3, 4, 56, 65, 78] |
2 | 0 | 1 | 4 | 56 | X | [3, 4, 56, 65, 78] |
2 | 0 | 2 | 56 | 65 | X | [3, 4, 56, 65, 78] |
2 | 0 | 3 | 65 | 78 | X | [3, 4, 56, 65, 78] |
답 : [3,4,56,65,78]
06. 다음의 결괏값을 작성하시오.
{
let num = [56, 4, 3, 65, 78];
let min = 9999;
for(let i=0; i<10; i++){
if(min > num[i]){
min = num[i];
}
}
console.log(min)
}
답 : 3
07. 다음의 결괏값을 작성하시오.
{
let num = [3, 4, 5, 7, 8];
let temp;
for(let i=0; i<=3; i++){
for(let j=i+1; j<=4; j++){
if(num[i] < num[j]){
temp = num[i];
num[i] = num[j];
num[j] = temp;
}
}
}
console.log(num);
}
i | j | num[i] | num[j] | 자리 변경 | 결과 |
0 | 1 | 3 | 4 | O | [4,3,5,7,8] |
0 | 2 | 4 | 5 | O | [5,3,4,7,8] |
0 | 3 | 5 | 7 | O | [7,3,4,5,8] |
0 | 4 | 7 | 8 | O | [8,3,4,5,7] |
1 | 2 | 3 | 4 | O | [8,4,3,5,7] |
1 | 3 | 4 | 5 | O | [8,5,3,4,7] |
1 | 4 | 5 | 7 | O | [8,7,3,4,5] |
2 | 3 | 3 | 4 | O | [8,7,4,3,5] |
2 | 4 | 4 | 5 | O | [8,7,5,3,4] |
3 | 4 | 3 | 4 | O | [8,7,5,4,3] |
4 | X | X | X | X | [8,7,5,4,3] |
08. 다음의 결괏값을 작성하시오.
{
let num = [1,2,3,4,5];
let sum = 1;
function func(arr){
for(let i=0; i<arr.length; i++) {
sum += arr[i];
}
for(let i=0; i<arr.length; i++){
if(arr[i] % 2 == 0) sum -= arr[i];
}
return sum;
}
console.log(func(num));
}
첫번째 for문
i | 추가된값(기본값 : 1) | 결과 |
0 | +1 | 2 |
1 | +2 | 4 |
2 | +3 | 7 |
3 | +4 | 11 |
4 | +5 | 16 |
두번째 for문(sum : 16)
i | num[i] | 조건충족여부 | 적용되는값 | 결과 |
0 | 1 | X | ||
1 | 2 | O | -2 | 14 |
2 | 3 | X | ||
3 | 4 | O | -4 | 10 |
4 | 5 | X |
답 : 10
09. 다음의 결괏값을 작성하시오.
{
let num = ["0","1","2","3","4","5","6","7","8","9"];
let sum = 100;
for(let i=0; i<num.length; i++){
num[i] = i+1;
}
for(let i=0; i<num.length; i++){
if(i % 3 == 1){
sum -= num[i];
}
}
console.log(sum)
}
답 : 85
10. 다음의 결괏값을 작성하시오.
{
let arr = [1,2,3,4,5];
let temp = [1,2,4,6,8];
let idx = 0;
let flag = true;
for(let i=0; i<arr.length; i++){
flag = false;
if(arr[i] == temp[i]){
flag = true;
}
if(!flag){
temp[idx++] = arr[i];
console.log(temp[idx]);
}
}
}
i | arr[i] | temp[i] | flag | arr[i] ==temp[i] | flag2 | temp | idx | |
0 | 1 | 1 | true | true | true | 1 | 0 | |
1 | 2 | 2 | true | true | true | 2 | 0 | |
2 | 3 | 4 | false | false | false | 3 | 1 | 2 |
3 | 4 | 6 | false | false | false | 4 | 2 | 4 |
4 | 5 | 8 | false | false | false | 5 | 3 | 6 |
답 : 2 4 6
11. 다음은 최솟값을 출력하는 예제이다. 밑줄에 적합한 표현을 작성하시오.
{
let num = [30,40,24,80,99];
let min = 9999;
for(let i=0; i<5; i++){
if(min > num[i]){
min = ________;
}
}
console.log("최소값 : ", min);
}
답 : num[i]
12. 다음의 결괏값을 작성하시오.
{
let s1 = "Remember november";
let s2 = s1.slice(0, 3) + s1.slice(12, 16);
let s3 = "r AND you";
console.log(s2 + s3)
}
- 코드에서는 먼저 s1 이라는 문자열을 정의하고, slice() 함수를 사용하여 문자열의 일부분을 추출한 후 변수 s2에 저장합니다.
- s1.slice(0, 3)은 첫 번째 문자부터 세 번째 문자 앞까지(0, 1, 2)의 부분 문자열 "Rem"을 추출합니다.
- s1.slice(12, 16)은 13번째 문자부터 16번째 문자 앞까지(12, 13, 14, 15)의 부분 문자열 "embe"를 추출합니다.
따라서 s2의 값은 "Rem" + "embe" = "Remembe"가 됩니다. - 그리고 다음으로 변수 s3에 "r AND you" 문자열을 할당합니다.
- 마지막으로 console.log(s2 + s3)를 호출하여 문자열 연결을 통해 s2와 s3의 값을 이어 붙인 결과 "Remember and you"가 출력됩니다.
답 : Remember and you
13. 다음의 결괏값을 작성하시오.
{
let x = 1;
console.log( !(x>0) );
console.log( x>0 || x<4 );
console.log( x<<2 );
console.log( x&2 );
console.log( x&3 );
}
- !(x > 0)
x > 0 은 참이므로, ! (not) 연산자를 적용하면 거짓이 됩니다.
결과적으로 false가 출력됩니다. - x > 0 || x < 4
x > 0 이 참이므로, || (or) 연산자를 통해 전체 조건식이 참이 됩니다.
결과적으로 true가 출력됩니다. - x << 2
<< (left shift) 연산자는 비트를 왼쪽으로 지정된 수만큼 이동시키는 연산입니다.
1 의 이진수 표현인 0001 에 대해 2 비트 왼쪽으로 이동하면 0100 즉, 4 가 됩니다.
결과적으로 4 가 출력됩니다. - x & 2
& (bitwise and) 연산자는 비트 단위로 and 연산을 수행합니다.
1 의 이진수 표현인 0001 과 2 의 이진수 표현인 0010 을 and 연산하면 0000 이 됩니다.
결과적으로 0 이 출력됩니다. - x & 3
1 의 이진수 표현인 0001 과 3 의 이진수 표현인 0011 을 and 연산하면 0001 이 됩니다.
결과적으로 1 이 출력됩니다.
답 : false true 4 0 1
14. 다음의 결괏값을 작성하시오.
{
let num = 0;
let i = 1;
while(i<=50){
if(i%7 == 0){
num += i;
}
i++;
}
console.log(num)
}
답 : 196
15. 다음의 결괏값을 작성하시오.
{
let result = 0;
for(let i=1; i<999; i++){
if(i%3==0 && i%2 !=0){
result = i;
}
}
console.log(result);
}
주어진 코드는 1부터 998까지의 숫자 중 3의 배수이면서 짝수는 아닌 숫자를 찾아 그 중 가장 큰 값을 result 변수에 저장하고, result를 출력하는 코드입니다. 따라서, 1부터 998까지의 숫자를 검사하면서 해당 조건을 만족하는 숫자를 찾고, 찾은 숫자 중 가장 큰 값을 출력하게 됩니다. 이 코드에서는 993이 해당 조건을 만족하는 가장 큰 값이므로 993이 출력됩니다.
답 : 993
16. 다음의 결괏값을 작성하시오.
{
function func(num){
if(num <= 1){
return 1;
} else {
return num + func(num - 2);
}
}
function main(){
let num = 5;
console.log(func(num))
}
main();
}
답 : 9
17. 다음의 결괏값을 작성하시오.
{
let a=1, b=1, num;
for(let i=0; i<6; i++){
num = a + b;
a = b;
b = num;
}
console.log(num)
}
답 : 21
18. 다음의 결괏값을 작성하시오.
{
function func(num1, num2){
let res = 1;
for(let i=0; i<num2; i++){
res *= num1;
}
return res;
}
let res = func(2, 10);
console.log(res)
}
func라는 이름의 함수를 정의하고, num1과 num2 두 개의 매개변수를 받아서 num1을 num2번 곱한 값을 반환하는 함수입니다. 이 함수는 for문를 사용하여 num1을 num2번 반복해서 곱하고, 최종 곱셈 결과값인 res를 반환합니다.
그 다음, let res = func(2, 10);라는 코드를 통해 func 함수를 호출하여, num1에 2를, num2에 10을 전달한 후, 반환된 결과값을 res 변수에 할당합니다.
마지막으로, console.log(res) 코드를 통해 res의 값을 출력합니다. res 변수는 2의 10제곱인 1024가 됩니다. 따라서 이 코드는 1024를 출력합니다.
답 : 1024
19. 다음의 결괏값을 작성하시오.
{
let a = func(4);
for(let i=0; i<a.length; i++){
console.log(a[i]);
}
function func(n){
let num = [];
for(let i=0; i<n; i++){
num[i] = i;
}
return num;
}
}
답 : 0,1,2,3
20. 다음의 결괏값을 작성하시오.
{
let a = 3, b = 4, c = 3, d = 5;
if( (a == 2 | a == c) & !(c > d) & (1 == b ^ c != d) ){
a = b + c;
if( 7 == b ^ c != a ){
console.log(a);
} else {
console.log(b);
}
} else {
console.log(a + b)
}
}
- (a == 2 | a == c) : a가 2이거나 c와 같으면 true, 그렇지 않으면 false
- !(c > d) : c가 d보다 크지 않으면 true, 그렇지 않으면 false
- (1 == b ^ c != d) : 다음 중 하나를 만족하면 true, 그렇지 않으면 false
- 1 == b : b가 1과 같으면 true
- c != d : c가 d와 다르면 true
- 따라서, 첫 번째 if문의 조건식은 false & true & true 이므로 false입니다.
- 따라서, else 블록이 실행됩니다. a + b를 계산하면 7이 나오므로, 마지막으로 출력되는 값은 7입니다.
답 : 7