JS-algorithm/JS 100제

📂 JS 100제 (11번~20번)

yunieyunie 2022. 3. 31. 15:27

문제11 : for를 이용한 기본 활용

1부터 100까지 모두 더하는 Code를 <pass> 부분에 완성하세요. for를 사용해야 합니다.

let s = 0;

//pass

console.log(s);

 

풀이

let s = 0;
for (let i=1; i<=100; i++){
  s += i
}
console.log(s);

 

 

문제12 : 게임 캐릭터 클래스 만들기

다음 소스코드에서 클래스를 작성하여 게임 캐릭터의 능력치와 '파이어볼'이 출력되게 만드시오.

주어진 소스 코드를 수정해선 안됩니다.

데이터
<여기에 class를 작성하세요.>

const x = new Wizard(545, 210, 10);
console.log(x.health, x.mana, x.armor);
x.attack();


출력
545 210 10
파이어볼

 

풀이

class Wizard {
  constructor (health,mana,armor) {
    this.health = health; 
    this.mana = mana; 
    this.armor = armor; 
  }
  attack(){
    console.log("파이어볼");
  }
}

const x = new Wizard(545, 210, 10);
console.log(x.health, x.mana,x.armor);
x.attack();

답안은 const Wizard = class Wizard { ~ 이렇게 클래스를 변수에 할당했는데 함수에도 표현식과 선언이 있듯

class에도 표현식과 선언이 있다.

내 풀이는 선언이고 답안은 표현식인데, 함수 선언 클래스 선언의 중요한 차이점은 함수의 경우 정의하기 하기 전에

호출할 수 있지만, 클래스는 반드시 정의한 뒤에 사용할 수 있다는 점이다.

참고 : https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Classes

 

 

문제13 : 몇 번째 행성인가요?

우리 태양계를 이루고 있는 행성은 수성, 금성, 지구, 화성, 목성, 토성, 천왕성, 해왕성으로 총 8개 입니다. 저희는 우리 태양계의 n번째 행성이 무엇인지 알고 싶습니다.

입력으로 행성의 순서를 나타내는 숫자 n이 입력됩니다. 출력으로 그 순서에 해당하는 행성의 이름을 출력해 주세요.

예를들어 1이 입력되면, 첫번째 행성인 수성이 출력됩니다.


입력 : 1
출력 : 수성

 

풀이

const planets = ['수성','금성','지구','화성','목성','토성','천왕성','해왕성']
const num = prompt("몇 번째?");
console.log(planet[num-1])

 

 

문제14 : 3의 배수 인가요?

영희는 친구와 게임을 하고 있습니다. 서로 돌아가며 랜덤으로 숫자를 하나 말하고 그게 3의 배수이면 박수를 치고 아니면 그 숫자를 그대로 말하는 게임입니다.

입력으로 랜덤한 숫자 n이 주어집니다.

만약 그 수가 3의 배수라면 '짝'이라는 글자를, 3의 배수가 아니라면 n을 그대로 출력해 주세요.

 

입력 : 3

출력 : 짝

 

입력 : 2

출력 : 2

 

 

풀이

const n = prompt('숫자?');

if(n % 3 === 0) {
  console.log('짝');
} else {
  console.log(n);
}

 

 

문제15 : 자기소개

신학기가 시작되고, 아이들이 돌아가면서 자기소개를 하기로 했습니다.

만약 입력으로 김다정이라는 이름이 주어지면 "안녕하세요. 저는 김다정입니다."라고 출력하게 해주세요.

**입출력**

입력 : 김다정
출력 : 안녕하세요. 저는 김다정입니다.

 

풀이

const name = prompt('이름이 뭐니?');
console.log(`안녕하세요. 저는 ${name}입니다.`)

 

 

문제16 : 로꾸거

문장이 입력되면 거꾸로 출력하는 프로그램을 만들어 봅시다.

**입출력**

입력 : 거꾸로
출력 : 로꾸거

 

풀이

const name = prompt('거꾸로 말해줄게');
let word =''

function LastToFirst(){
  for(let i = name.length; i > 0; i--){
    word += name[i-1];
  }
  return word
}

console.log(LastToFirst(name));

빈 문자열에 입력한 문자를 끝에서부터 하나씩 추가하는 함수를 사용했다.

 

 

답안

const n = prompt('입력하세요.');

const reverseString = n.split('').reverse().join('');
/*
* split() 메서드는 문자열을 배열로 만들어 반환하고,
* reverse() 메서드는 배열의 순서를 반전하며,
* join() 메서드는 원소를 모두 붙여 문자열로 반환합니다.
*/
console.log(reverseString);

답안은 split, reverse, join을 이용해 한 줄로 표현했다.

 

 

 

문제17 : 놀이기구 키 제한

유주는 놀이공원 아르바이트 중입니다. 그런데 놀이기구마다 키 제한이 있습니다. 유주가 담당하는 놀이기구는 키가 150cm 이상만 탈 수 있습니다.

입력으로 키가 주어지면 키가 150이 넘으면 YES를 틀리면 NO를 출력하는 프로그램을 작성하세요.

 

 

풀이

const height = prompt('키가 몇이에요?');

if (height >= 150){
  console.log('YES');
}
  else{
    console.log('NO');
}

 

 

 

문제18 : 평균 점수

영하네 반은 국어, 수학, 영어 시험을 보았습니다. 영하는 친구들의 평균 점수를 구해주기로 했습니다.

공백으로 구분하여 세 과목의 점수가 주어지면 전체 평균 점수를 구하는 프로그램을 작성하세요. 단, 소숫점 자리는 모두 버립니다.

**입출력**

입력 : 20 30 40
출력 : 30

 

풀이

const score = prompt('점수를 입력하세요');
let sum = 0
const scores = score.split(" ")

for (let i = 0; i<scores.length; i++){
  sum += Number(scores[i]);
}  

console.log(Math.floor(sum/scores.length))

 

답안

const scores = prompt('세 과목의 점수를 입력하세요.').split(' ');
let sum = 0;

for (let i=0; i<3; i++){
  sum += parseInt(scores[i], 10); // 십진수의 형태의 숫자로 데이터 타입을 변환합니다.
}

console.log(Math.floor(sum/3)); //Math.floor 메서드는 소수점 자리를 모두 버림합니다.

 

 

문제19 : 제곱을 구하자

공백으로 구분하여 두 숫자 a와 b가 주어지면, a의 b승을 구하는 프로그램을 작성하세요.

 

 

풀이

const number = prompt('숫자를 입력하세요').split(' ');

console.log(parseInt(number[0],10) ** parseInt(number[1],10))

 

답안

const n = prompt('수를 입력하세요.').split(' ');

console.log(Math.pow(parseInt(n[0], 10), parseInt(n[1], 10)));

답안은 Math.pow를 사용했는데 **는 BigInt도 피연산자로 받을 수 있다는 점을 제외하면 Math.pow와 같다.

 

 

 

문제20 : 몫과 나머지

공백으로 구분하여 두 숫자가 주어집니다. 두번째 숫자로 첫번째 숫자를 나누었을 때 그 몫과 나머지를 공백으로 구분하여 출력하세요.

**입출력**

입력 : 10 2
출력 : 5 0

 

풀이

const number = prompt('숫자를 입력하세요').split(' ');

const quotient = parseInt(number[0]) / parseInt(number[1]);
const remainder = parseInt(number[0]) % parseInt(number[1]);

console.log(quotient, remainder)

 

 

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