한번씩 읽고 가세요.
“ 지연되는 프로젝트에 인력을 더 투입하면 오히려 더 늦어진다. ”
- Frederick Philips Brooks
Mythical Man-Month 저자
오답노트
01. 결괏값을 작성하시오.
{
const str = "javascript";
const text = str.indexOf("a");
const text2 = str.lastIndexOf("a");
const text3 = str.includes("a");
console.log(text);
console.log(text2);
console.log(text3);
}
정답: 1 0 3
해설: indexOf 는 앞부터 0부터 시작하기 때문에 a자리는 1이기 때문에 1이나온다.
lastindexOf는 뒷자리 부터 기준을 두어 뒤에 있는 a는 3자리이기 때문에 3
includes는 불린으로 반환하기 때문에 javascript가 들어가 있어 true가 나온다.
02. 다음의 결괏값을 보고 빈칸을 채우시오.
{
function func(){
document.write("함수2가 실행되었습니다.");
}
function callback(str){
document.write("함수1가 실행되었습니다.");
_______();
}
callback(func);
//함수1가 실행되었습니다.
//함수2가 실행되었습니다.
}
정답:
해설:
03. 결괏값을 작성하시오.
{
function func(a, b){
console.log(arguments[0]);
console.log(arguments[1]);
}
func("1", "2");
}
정답:
해설:
04. 결괏값을 작성하시오.
{
function func(num, name, word){
this.num = num;
this.name = name;
this.word = word;
}
func.prototype = {
result1 : function(){
console.log(this.num + ". " + this.name + "가 "+ this.word + "되었습니다.");
},
result2 : function(){
console.log(this.num + ". " + this.name + "가 "+ this.word + "되었습니다.");
},
result3 : function(){
console.log(this.num + ". " + this.name + "가 "+ this.word + "되었습니다.");
}
}
const info1 = new func("1", "함수", "실행");
const info2 = new func("2", "자바스크립트", "실행");
const info3 = new func("3", "제이쿼리", "실행");
info1.result1();
info2.result2();
}
정답:
해설:
05. 결괏값을 작성하시오.
{
function func(num, name, word){
this.num = num;
this.name = name;
this.word = word;
}
func.prototype.result = function(){
console.log(this.num + ". " + this.name + "가 "+ this.word + "되었습니다.");
}
const info1 = new func("1", "함수", "실행");
const info2 = new func("2", "자바스크립트", "실행");
const info3 = new func("3", "제이쿼리", "실행");
info1.result();
}
정답:
해설:
06. 결괏값을 작성하시오.
{
function func(index){
console.log("함수가 실행되었습니다." + index);
}
function callback(num){
for( let i=1; i<=1; i++){
num(i);
}
}
callback(func);
}
정답:
해설:
07. 결괏값을 작성하시오.
{
let num = 1;
do {
num++;
console.log("실행되었습니다.");
} while (num <= 5);
}
정답: 실행되었습니다. 실행되었습니다.실행되었습니다.실행되었습니다.실행되었습니다.
해설:num은 1이지만 num++이 있어 2지만 2<5 참이므로 반복 5번
08. 결괏값을 작성하시오.
{
const arr = [100, 200, 300, 400, 500];
const text1 = arr.join("*");
const text2 = arr.join("-");
const text3 = arr.join("");
const text4 = arr.join(" ");
console.log(text1);
console.log(text2);
console.log(text3);
console.log(text4);
}
정답:
해설:
09. 다음을 최대한 짧게 약식으로 표현하시오.
{
function func(str){
return str;
}
func("함수가 실행되었습니다.")
}
정답:
해설:
10. 다음을 결과값을 작성하시오.
{
function func(){
let i = 10, j = 10, k = 30;
i /= j;
j -= i;
k %= j;
console.log(i);
console.log(j);
console.log(k);
}
func();
}
정답: 1 9 3
해설: i는 10 i /=j 10 나누기 10은 1이다 i = 1
j는 j - i (1) 이라 10 -1 = 9 9가 나온다.
11. 다음을 결과값을 작성하시오.
{
let k = 0;
let temp;
for(let i=0; i<=3; i++){
temp = k;
k++;
console.log(temp + "번");
}
}
정답: 0번 1번 2번 3번
해설:0,1,2,3이 조건에 맞아 temp = k가 적용 되기 때문에 뒤에있는k++은 안거치고 0123이 나온다
12. 다음을 결과값을 작성하시오.
{
let num1 = 3;
let num2 = 7;
if(++num1 < 5 || ++num2 > 8){
console.log(num1);
}
console.log(num2)
}
정답: 4, 7
해설:num1은 조건이 맞고 괄호 안에 있기 때문에 ++num1이 적용 되어 4가 나오고 num2는 조건문 밖에서 출력 됬으므로
그대로 7이 나온다.
13. 다음을 결과값을 작성하시오.
{
let num = [1, 5, 1, 2, 7, 5];
for(let i=0; i<6; i++){
if((i+1) % 2 == 0){
console.log(num[i]);
}
}
}
정답: 5 2 5
해설: 조건이 i 에 1을 더했을때 짝수가 되어야 하기 때문에 홀수인 i {135}가 출력되지만 그 출력 값음 i안에 배열이기 때문에 525가 나온다.
14. 다음을 결과값을 작성하시오.
{
let num = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
for(let i=9; i>=0; i--){
switch(num[i] % 2){
case 1:
console.log(num[i]);
break;
default:
console.log("*");
}
}
}
정답: 9*7*5*3*1
해설:case1은 나머지가 1이여야 하기 때문에 홀수가 나와야하고 그렇지 않으면 * 로 표시 된다. for문 안의 스위치문 이기 때문에 반복한다.
15. 다음을 결과값을 작성하시오.
{
let cnt = 0;
let sum = 0;
for(let i=0; i<=7; i++){
if(i%2 == 1){
cnt++;
sum = sum + i;
}
}
console.log(cnt + ", "+sum);
}
정답: 4,17
해설: 조건에 맞으려면 홀수여야 하고 i<=7안에 홀수는 4개이다 그러므로 cnt는 ++이 네번 적용해 4이고
sum은 그 홀수의 합인 17이 나온다.
16. 다음을 결과값을 작성하시오.
{
let data = [70, 80, 75, 60, 90];
let best = 1;
let score = 0;
for(let i=0; i<data.length; i++){
if(data[i]>80) {
best++;
}
if(score < data[i]) {
score = data[i];
}
}
console.log(best, score)
}
정답: 2, 90
해설:if(data[i]>80) 에 맞는 배열은 90 하나 여서 best는 1이였기 때문에 +1이 된 2가 나온다. if(score < data[i]) {score = data[i];} 는 score는 0이라 모든 배열이 조건에 맞아 가장 큰 값 90이 나온다.
17. 다음을 결과값을 작성하시오.
{
let a, b, result;
a = 7, b = 4
result = a & b;
console.log(result)
}
정답:4
해설:비트연산자 & 는 1:1=1,0:1=0,1:0=0,0:0=0 이기 때문에 0100의 십진수인 4가 정답이다.
18. 다음을 결과값을 작성하시오.
{
function solution(a, b, c){
let answer="YES", max;
let tot = a + b + c;
if(a > b) max = a;
else max = b;
if(c > max) max = c;
if(tot-max <= max) answer = "NO";
return answer;
}
console.log(solution(13, 33, 17));
}
정답:
해설:
19. 다음을 결과값을 작성하시오.
{
function solution(a, b, c){
let answer;
if(a < b) answer = a;
else answer = b;
if(c < answer) answer = c;
return answer;
}
console.log(solution(2, 5, 1));
}
정답:
해설:
20. 다음을 결과값을 작성하시오.
{
function solution(day, arr){
let answer = 0;
for(let x of arr){
if(x % 10 == day) answer++;
}
return answer;
}
arr = [25, 23, 11, 47, 53, 17, 33];
console.log(solution(3, arr));
}
정답: 3
해설: day는 3이고 x는 arr 배열 안 값이기 때문에 10으로 나눴을 때 day (3)이 나오는 값이 3개 이므로 answer에 ++가 3번 적용 되어 3