JS-algorithm/JS 100제

📂 JS 100제 (1번~10번)

yunieyunie 2022. 3. 30. 17:57

문제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));
  1. undefined
  2. string
  3. number
  4. object

 

풀이

undefined, string, number 는 모두 기본 자료형(primitive type)으로 정답은 '4번'.

 

 

문제4 : 변수의 타입2

다음 변수 a를 typeof(a)로 넣었을 때 출력될 값과의 연결이 알맞지 않은 것은?

  1. 입력 : a =1, 출력 : number
  2. 입력 : a = 2.22, 출력 : boolean
  3. 입력 : a = 'p', 출력 : string
  4. 입력 : 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);
  1. 10
  2. 12
  3. 14
  4. 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를 찾아주세요.

  1. NaN
  2. 1
  3. ""
  4. 0
  5. undefined

 

풀이

null, undefined, 0, 빈 문자열, NaN, false 를 제외하고는 모두 참인 값으로 평가하므로 정답은 '2번'

 

 

문제7 : 변수명

다음 중 변수명으로 사용할 수 없는 것 2개를 고르시오.

  1. age
  2. Age
  3. let
  4. _age
  5. 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