QUOTE THE DAY
“ 당신이 6개월 이상 한 번도 보지 않은 코드는 다른 사람이 다시 만드는 게 훨씬 더 나을 수 있다. ”
-
이글슨 (Eagleson)
반응형
자바스크립트 테스트
정보처리기능사 기출문제를 자바스크립트로 변환한 문제입니다.
01. 다음의 결괏값을 작성하시오.
{
let i = 0;
let sum = 0;
while(i < 10){
i = i+1;
if( i % 4 == 0) sum -= i;
if( i % 4 == 1) sum += i;
if( i % 4 == 2) sum *= i
}
console.log(sum)
}
😎결과 확인하기
190
오답
코드에서는 0부터 9까지의 숫자를 반복하면서 i 값을 증가시키고, i 값이 4의 배수일 때 sum에서 i 값을 뺀 후, 4로 나누어 떨어지지 않을 때는 i 값을 더하고, 4로 나누어 떨어질 때는 i 값을 곱한 값을 sum에 더합니다.
- i=1 일 때, 1 % 4 == 1 이므로 sum에 1을 더합니다.
- i=2 일 때, 2 % 4 == 2 이므로 sum에 2를 곱합니다.
- i=3 일 때, 3 % 4 == 3 이므로 sum에 3을 곱합니다.
- i=4 일 때, 4 % 4 == 0 이므로 sum에서 4를 뺍니다.
- i=5 일 때, 5 % 4 == 1 이므로 sum에 5를 더합니다.
- i=6 일 때, 6 % 4 == 2 이므로 sum에 6을 곱합니다.
- i=7 일 때, 7 % 4 == 3 이므로 sum에 42를 곱합니다.
- i=8 일 때, 8 % 4 == 0 이므로 sum에서 8을 뺍니다.
- i=9 일 때, 9 % 4 == 1 이므로 sum에 9를 더합니다.
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(0){
cnt += 1;
ret *= diff;
if(cnt == n) return ret;
}
return ret
}
console.log(func(1, 3, 4));
}
😎결과 확인하기
1
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
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]);
}
}
}
😎결과 확인하기
3, 4, 5
오답
- for 루프는 arr 배열의 각 요소를 반복하여 확인하며, flag 변수는 현재 요소가 temp 배열과 일치하는지 여부를 추적합니다.
- 먼저 flag를 false로 설정하고, arr[i]와 temp[i]가 일치하면 flag를 true로 설정합니다. 이후, flag가 false인 경우에만 실행되는 블록에서 temp[idx]에 arr[i] 값을 할당하고 idx를 1 증가시킵니다. 그리고 temp[idx] 값을 콘솔에 출력합니다.
- temp 배열의 길이를 arr 배열과 같거나 크게 유지해야 합니다. 만약 arr 배열의 길이가 temp 배열의 길이보다 크다면, 나머지 요소는 temp에 그대로 남게 됩니다.
- 또한, idx 변수를 사용하여 temp 배열의 다음 위치에 값을 할당하므로, idx가 arr 배열의 인덱스를 초과하지 않도록 주의해야 합니다.
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
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이 1 이하일 경우 1을 반환하고, 그 외의 경우에는 num에 자기 자신보다 2 작은 수를 대입하여 다시 func를 호출한 결과와 num을 더한 값을 반환합니다.
- 이렇게 호출된 func 함수는 다시 자신보다 2 작은 수를 대입하여 재귀적으로 호출되며, 이전에 호출한 함수의 결과와 더해지면서 최종적으로 1부터 num까지의 홀수 합을 계산합니다.
- 메인 함수 main은 num 변수를 5로 초기화하고, func 함수에 num을 전달하여 그 결과를 콘솔에 출력합니다. 따라서 이 코드를 실행하면, 1부터 5까지의 홀수 합인 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)
}
😎결과 확인하기
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)
}
}
😎결과 확인하기
7
반응형