본문 바로가기

IT 기초/JavaScript

자바스크립트 기본 문제 풀기 (2)

문제7. 행성의 한글 이름 입력하면 영어 이름 반환하는 프로그램

//내 답안
let name = prompt("행성이름 입력");

let planets =["수성","금성","지구","화성","목성","토성","천왕성","해왕성"];
let planetsEng = ["Mercury","Venus","Earth","Mars","Jupiter","Saturn","Uranus","Neptune"];

console.log(planetsEng[planets.indexOf(name)]);

// 객체를 이용해 더 간결하게 나타낼 수 있음
const planets = {
	'수성' : 'Mercury',
	'금성' : 'Venus',
	'지구' : 'Earth',
	'화성' : 'Mars',
	'목성' : 'Jupiter',
	'토성' : 'Saturn',
	'천왕성' : 'Uranus',
	'해왕성' : 'Neptune',
};

const name = prompt("행성의 이름을 입력하세요.");

console.log(planets[name]);

 

문제8. 학생 이름과 점수 받아 각각 key, value로 객체 출력

let name = prompt("학생 이름 입력").split(' ') //공백으로 이름 구분
let score = prompt("점수 입력").split(' ')
let obj ={}

for (let i=0; i<name.length; i++) {
  obj[name[i]] = parseInt(score[i],10); //변수 이름으로 속성 지정 X -> 대괄호[ ]를 붙여줌
}

console.log(obj)

// 유진 혜진 70 100 입력시 {'유진':70, '혜진':100} 출력

 

문제9. 문자열에서 2개의 연속된 요소 출력

let str = prompt("문자 입력하기")

for (let i=0; i<str.length-1; i++){
  console.log(str[i], str[i+1]);
}

/* Cloud 입력시
C l
l o
o u
u d
*/

// 문자열에서 각 문자에 접근하는 방법은 배열과 유사

 

문제10. 여러 개 숫자 입력시 역순으로 하나씩 출력

// 내 답안
let num = prompt("여러 개의 숫자 입력").split(' ').reverse().join(' ');
// join은 배열 요소를 연결해 하나의 문자열로 만들어줌

console.log(num)

// 답 방법
const data = prompt('숫자를 입력하세요.').split(' ').reverse();
let result = '';

for (let i=0; i<data.length; i++){
  result += data[i];
}

console.log(result);

 

문제11. 키 순서대로(오름차순) 섰는지 확인하기

// 내 답안, for문 써서 더 로직이 복잡
let num = prompt("키 입력").split(' ');
let a = true;

for (let i=0; i<num.length-1; i++){
  if (num[i] > num[i+1]){
    a = false;
  }
}
if (a === false) {
  console.log("NO")
}
else {console.log("YES")}

// 답, sort 써서 간결
const unsorted = prompt('키를 입력하세요');
let sorted = "";

sorted = unsorted.split(' ').sort(function(a, b) {
    return a - b;
  })
  .join(" ");

if (unsorted === sorted) {
  console.log("Yes"); //오름차순 정렬한게 입력값이랑 같으면 YES 나머지 다 NO
} else {
  console.log("No");
}

// 155 156 165 166 169 176 입력 -> YES
/* sort 메소드: 배열의 요소 정렬, 비교함수가 두 개의 인수(a,b) 받아 a-b면 음수(오름차순), b-a면 양수(내림차순)

 

문제12. 2제곱, 3제곱, 4제곱 할 수 있는 함수 만들기

function one(n) {
  function two(value) {
    const sq = Math.pow(value, n);
    return sq;
  }
  return two;
}

const a = one(2); 
const b = one(3);
const c = one(4);
//one 함수 호출해 초기화(처음 값 할당), one 함수는 two 함수 반환하므로 a변수는 two 함수 인스턴스 참조

console.log(a(10)); //two 함수의 인스턴스 호출, two 함수의 인수로 10 전달 -> 100 반환
console.log(b(10));
console.log(c(10));