정보처리 기능사 기출 문제를 자바스크립트로 변환한 문제들 입니다.
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)
}
정답
129
오답노트
i = 1일 때, i % 3 == 1이므로 sum = 0 + 1 = 1
i = 2일 때, i % 3 == 2이므로 sum = 1 * 2 = 2
i = 3일 때, i % 3 == 0이므로 sum = 2 - 3 = -1
i = 4일 때, i % 3 == 1이므로 sum = -1 + 4 = 3
i = 5일 때, i % 3 == 2이므로 sum = 3 * 5 = 15
i = 6일 때, i % 3 == 0이므로 sum = 15 - 6 = 9
i = 7일 때, i % 3 == 1이므로 sum = 9 + 7 = 16
i = 8일 때, i % 3 == 2이므로 sum = 16 * 8 = 128
i = 9일 때, i % 3 == 0이므로 sum = 128 - 9 = 119
i = 10일 때, i % 3 == 1이므로 sum = 119 + 10 = 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));
}
정답
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)
}
정답
[4,3,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);
}
정답
[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));
}
정답
10
오답노트
sum 값이 1부터 시작합니다. 따라서 num 배열의 모든 원소를 더하면 1 + 1 + 2 + 3 + 4 + 5 = 16이 되며, 짝수 원소 2와 4를 뺀다면 16 - 2 - 4 = 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
오답노트
1+2+3+4+5+6+7+8+9+10 = 55
55 - 2 - 5 - 8 = 40
100 + 1 + 3 + 4 + 6 + 7 + 9 + 10 - 40 = 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]);
}
}
}
정답
2 4 6
오답노트
arr과 temp 배열의 같은 인덱스에 있는 값이 다른 경우, temp 배열의 해당 인덱스 값을 arr 배열의 값으로 대체하고 그 값을 출력합니다.arr과 temp 배열의 같은 인덱스에 있는 값이 다른 경우, 즉 arr의 2번째, 3번째, 4번째 요소와 temp의 2번째, 3번째, 4번째 요소가 서로 다른 경우, temp 배열의 해당 인덱스 값을 arr 배열의 값으로 대체하고 그 값(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)
}
정답
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 );
}
정답
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);
}
정답
993
오답노트
i가 3으로 나누어 떨어지면서 2로 나누어 떨어지지 않는 경우 result에 i를 할당합니다. 이 때, i가 3으로 나누어 떨어지면서 2로 나누어 떨어지지 않는 경우는 3의 배수 중에서 홀수인 수입니다. 이렇게 for 루프가 끝나면 result에는 1부터 999까지의 수 중에서 3으로 나누어 떨어지면서 2로 나누어 떨어지지 않는 가장 큰 수인 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
오답노트
func(num)은 num이 1 이하일 경우 1을 반환하고, 그 외의 경우에는 num과 func(num - 2)의 합을 반환합니다. 이때 func(num - 2)는 num에서 2를 뺀 값을 인자로 하여 다시 func 함수를 호출합니다.
main 함수에서는 num 변수에 5를 할당하고, func(num)의 결과를 출력합니다.
func(5)가 호출되며, 이는 5 + func(3)을 반환합니다. 다시 func(3)은 3 + func(1)을 반환하며, func(1)은 1을 반환합니다. 따라서 최종적으로 func(5)는 5 + 3 + 1 = 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
오답노트
a와 b 변수에 1을 할당하고, 반복문을 6번 실행하면서 num 변수에 a와 b를 더한 값을 할당하고, a에는 b의 값, b에는 num의 값을 할당합니다. 반복문이 끝나면 num 변수에는 피보나치 수열의 7번째 값을 저장하고 있으므로, 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)
}
정답
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
오답노트
func(n)은 n의 크기만큼 배열을 만들어 0부터 n-1까지의 값을 요소로 가지고 있는 배열을 반환하는 함수입니다. 따라서 func(4)의 결과는 [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)
}
}
정답
7