📂 JS 100제 (1번~10번)
문제1 : 배열의 삭제
다음 배열에서 400, 500를 삭제하는 code를 입력하세요.
var nums = [100, 200, 300, 400, 500];
풀이
//풀이1. pop 사용하기
nums.pop()
nums.pop()
console.log(nums)
//풀이2. splice 사용하기
nums.splice(3,2) //index 3부터 2개 제거
console.log(nums)
//풀이3. 함수 사용하지 않기
nums.length = nums.length - 2; //배열의 크기를 두 개 줄인다
console.log(nums)
문제2 : 배열의 내장함수
<pass>부분에 배열 내장함수를 이용하여 코드를 입력하고 다음과 같이 출력되게 하세요.
데이터
var arr = [200, 100, 300];
//pass
console.log(arr);
출력
[200, 100, 10000, 300]
풀이
//풀이1. pop과 push 사용하기
var arr = [200, 100, 300];
arr.pop()
arr.push(10000)
arr.push(300)
console.log(arr);
//풀이2. splice 사용하기
arr.splice(2, 0, 10000) //index 2의 위치에 10000추가
console.log(arr)
문제3 : 변수의 타입
다음 출력 값으로 올바른 것은?
var arr = [100, 200, 300];
console.log(typeof(arr));
- undefined
- string
- number
- object
풀이
undefined, string, number 는 모두 기본 자료형(primitive type)으로 정답은 '4번'.
문제4 : 변수의 타입2
다음 변수 a를 typeof(a)로 넣었을 때 출력될 값과의 연결이 알맞지 않은 것은?
- 입력 : a =1, 출력 : number
- 입력 : a = 2.22, 출력 : boolean
- 입력 : a = 'p', 출력 : string
- 입력 : a = [1, 2, 3], 출력 : object
풀이
boolean 에 해당하는 값은 true 와 false 두 가지로 정답은 '2번'
문제5 : for문 계산
다음 코드의 출력 값으로 알맞은 것은?
var a = 10;
var b = 2;
for(var i=1; i<5; i+=2){
a += i;
}
console.log(a+b);
- 10
- 12
- 14
- 16
풀이
i = 1일 때 i < 5이므로 a +=1 해서 a = 11
i = 3일 때 i < 5이므로 a += 3 해서 a = 14
i = 5일 때 i < 5가 아니므로 끝
따라서 a + b = 14 + 2 = 16
문제6 : False
다음은 자바스크립트 문법 중에서 False로 취급하는 것들 입니다.
앗, False로 취급하지 않는 것이 하나 있네요! True를 찾아주세요.
- NaN
- 1
- ""
- 0
- undefined
풀이
null, undefined, 0, 빈 문자열, NaN, false 를 제외하고는 모두 참인 값으로 평가하므로 정답은 '2번'
문제7 : 변수명
다음 중 변수명으로 사용할 수 없는 것 2개를 고르시오.
- age
- Age
- let
- _age
- 1age
풀이
JavaScript 식별자는 문자, 밑줄(_) 혹은 달러 기호($)로 시작해야하며,
let 은 이미 JavaScript 문법에 존재하는 예약어라 사용이 불가능하다. 따라서 정답은 '3번', '5번'
문제8 : 객체의 키 이름 중복
자바스크립트 객체를 다음과 같이 만들었다. 출력값을 입력하시오. (출력값은 공백을 넣지 않습니다. )
var d = {
'height':180,
'weight':78,
'weight':84,
'temperature':36,
'eyesight':1
};
console.log(d['weight']);
풀이
객체 d의 weight 프로퍼티의 값인 84가 출력된다
문제9 : concat을 활용한 출력 방법
다음 소스 코드를 완성하여 날짜와 시간을 출력하시오.
**데이터**
var year = '2019';
var month = '04';
var day = '26';
var hour = '11';
var minute = '34';
var second = '27';
var result = //빈칸을 채워주세요
console.log(result);
**출력**
2019/04/26 11:34:27
풀이
//풀이1. concat 사용
var result = year.concat('/', month, '/', day, ' ', hour, ':', minute, ':', second);
console.log(result);
//풀이2. concat 사용 안하기
var result = `${year}/${month}/${day} ${hour}:${minute}:${second}`
console.log(result);
문제10 : 별 찍기
크리스마스 날, 은비는 친구들과 함께 파티를 하기로 했습니다.
그런데, 크리스마스 트리를 사는 것을 깜빡하고 말았습니다.
온 가게를 돌아다녀 봤지만 크리스마스 트리는 모두 품절이었습니다.
하는 수 없이 은비는 프로그래밍으로 트리를 만들기로 합니다.
은비를 위해 프로그램을 작성해 주세요.
입력
5
출력
*
***
*****
*******
*********
풀이
//풀이1. for문 여러번 사용
const n = prompt('숫자를 입력하세요.');
let tree = '';
for(let i=1; i<=n; i++){
let star = '';
for(let j=1; j<=n-i; j++){
star += ' ';
}
for(let k=1; k<=2*i-1; k++){
star += '*';
}
tree += star + '\n';
}
console.log(tree);
답안에 나와있는 위의 풀이는 for문이 3번이나 사용되어 더 간단한 풀이를 생각해보았다.
//풀이 2. for문 한 번만 사용
const num = prompt('숫자를 입력해주세요');
let tree = ''
for (let i = 1; i <= num; i++){
let blank = ` `.repeat(num-i);
tree += (blank + '*'.repeat(i+(i-1)) + blank) +'\n';
}
console.log(tree)
blank는 입력받은 num에서 i를 뺀 갯수 만큼의 공백이며, *의 앞 뒤에 blank를 추가해 트리 모양을 출력했다.
https://www.notion.so/JS-100-1-0465a498481c471488646526a181087f
JS 100제 - 1권
A new tool for teams & individuals that blends everyday work apps into one.
www.notion.so