1주차_배열,객체,조건문,반복문

zitto·2023년 3월 20일
0

Algorithms

목록 보기
1/22
post-thumbnail

문제 1) 배열의 기능

주어진 fruits 배열에서 마지막 요소를 꺼내 newFruits에 넣어주세요.

주의 사항
- length를 이용해서 문제를 풀어야 합니다.
- push를 이용해서 문제를 풀어야 합니다.
- 마지막 요소를 꺼낼 때 length를 사용하는 이유는 무엇일까요.

예상결과

console.log(newFruits) // ["파인애플"]

답안

let fruits = ["사과", "바나나", "파인애플"]
let newFruits = []
newFruits.push(fruits[fruits.length-1])
newFruits;

문제 2) 배열의 기능

주어진 fruits 배열의 모든 요소에 "맛있는" 이라는 문자열을 추가하세요.

주의 사항
배열의 index와 변수의 재할당을 사용해서 문제를 풀어주세요.

예상결과

배열의 index와 변수의 재할당을 사용해서 문제를 풀어주세요.

답안

let fruits = ["사과", "바나나"]
//let apple = "맛있는 " + fruits[0];
//apple;
//let banana = "맛있는 " + fruits[1];
//banana;
fruits[0] = "맛있는 " + fruits[0];
fruits[1] = "맛있는 " + fruits[1];

문제 3) 객체의 키&값 추가

student와 school 두 개의 객체가 있습니다.
student 객체에 school이라는 객체를 할당해야 합니다.

주의 사항
배열의 index와 변수의 재할당을 사용해서 문제를 풀어주세요.

예상결과

console.log(student)
// 	{
//     name: '철수',
//     age: 8,
//     school: {
//       name: '다람쥐초등학교',
//       teacher: '다람이'
//     }
//  }

답안

const student = {
	name: "철수",
	age: 8,
};
const school = {
	name: "다람쥐초등학교",
	teacher: "다람이",
}
student.school = school;
student[school] = school 
//'[object object]' .. 문자열로서 가져오게 됨.

문제 4) 객체의 키&값 삭제

주어진 student는 "철수"에 대한 정보를 모아둔 객체입니다.
그런데 철수와 관련이 없는 drink라는 키가 있네요.
student에서 { drink: "사이다" }를 삭제해주세요

주의 사항
- 객체에서 키&값을 삭제하는 명령어는 무엇일까요?
- 실무에서는 delete사용안함. 원본이 삭제됨.

예상결과

console.log(student) // { name : "철수", age: 8 }

답안

let student = {
	name: "철수",
	age: 8,
	drink: "사이다"
};
delete student.drink
student;

문제 5) 연산자 연습

각각의 연산 결과가 무엇인지 알아보세요.

주의 사항
- NaN은 Not-A-Number의 약자입니다.
- 연산자는 숫자에서만 정의되므로 모두 숫자로 반환합니다.
- Javascript에서 + 연산자는 "더하기" 와 "연결"의 의미를 갖고 있습니다.
예상결과

답안

1 + "1" 
// 11
1 - "1"
//0
"1" + "1"
//11
1 * "1"
//1
3 * "A"
//NaN
1 + 1 + '1'
//21
'1' + 1 + 1
//111
"11" - 1
//10
"11" + 1
//111
"홍" + "길동"
//홍길동
20 === "20"
//flase
20 == "20"
//true
!true
//false

문제 6) 홀짝

입력되는 숫자가 짝수인지 홀수인지 구별하는 함수를 만들려고 합니다.
입력된 값이 "짝수"이면 "Even", "홀수"이면 "Odd", 0이면 "Zero"라는 문구를 띄워주세요.

입력 인자
- num은 0 이상인 자연수
주의 사항
- if는 함수 안에서 사용됩니다.
- console.log("Even")으로 입력하면 "Even"이라는 값이 출력됩니다.

예상결과

evenOdd(12) // "Even"
evenOdd(15) // "Odd"
evenOdd(0)  // "Zero"

답안

function evenOdd(num) {
	if (num === 0) {
		console.log("Zero");
	} else if (num%2 === 1) {
		console.log("Odd");
	} else{
		console.log("Even");
	}
}
function evenOdd(num) {
	if (!num) {
		console.log("Zero");
	} else if (num % 2) {
		console.log("Odd");
	} else if(!(num % 2)){
		console.log("Even");
	}
}

문제 7) 몇 일

입력되는 달(month)에 따라 각 달에 몇 일이 있는지 보여주는 함수를 만들려고 합니다.
각 조건에 해당하는 알맞은 값을 입력해주세요.

입력 인자
- month는 1~12의 숫자
주의 사항
- | 연산자가 필요합니다.
- 2월은 28일로 계산합니다.

예상결과

days(1) // 31
days(2) // 28
days(4) // 30

답안

function days(month) {
	if (month === 2) {
		console.log("28");
	} else if ( month === 1 || month === 3 || month === 5 || month === 7 || month === 8 || month === 10 || month === 12) {
		console.log("31")
	} else {
		console.log("30")
	}
}

문제 8) 특정문자열 세기

문자열에서 "a"가 몇 번 등장하는지 횟수를 구하는 함수를 만들려고 합니다.
반복문을 이용해 "a"의 등장 횟수를 변수 "count"에 할당하세요.

입력 인자
- str은 문자열입니다.

주의 사항
- for을 이용해서 문제를 풀어야 합니다.
- 문자열도 배열입니다.

예상결과

countLetter("I am from Korea")                         // 2
countLetter("A day without laughter is a day wasted.") // 6

답안

function countLetter(str) {
	let count = 0;
  for (let i=0; i<str.length;i++) {
    // console.log(i,str[i])
    if(str[i] === "a" || str[i] === "A"){
      count++;
    }
  }return count;
}
//더쉬운 방법
function countLetter(str) {
  	let count = 0;
  str = str.toLowerCase()
  for (let i=0; i<str.length;i++) {
    // console.log(i,str[i])
    if(str[i] === "a"){
      count++;
    }
  }return count;
}

문제 9) 문자열 삽입

num을 입력받아 1부터 num까지 각각의 숫자 사이에 "-"가 들어간 문자열을 만들어야 합니다.
num에 3일 경우에는 "1-2-3"입니다.

입력 인자
- num은 숫자열입니다.

주의 사항
- for을 이용해서 문제를 풀어야 합니다.

예상결과

makeNumber(5) // 1-2-3-4-5
makeNumber(7) // 1-2-3-4-5-6-7

답안

function makeNumber(num) {
  let answer = ""; //정답을 담을 변수
  for (let i=1; i<=num; i++) {
    if(i !== 1){ //만약 가장먼저 가져오는 값이 1이 아닐때만 하이픈을 붙여줄것
      answer += "-"
    }
    // if(i !== num){ //마지막
    //   answer += "-"
    // } 
    answer += i //주의! 자스에서 "문자열" + 1는 = "문자열1" 합산이 아님
    console.log(answer)
  }return 
}

문제 10) 홀수 문자열

num을 입력받아 1부터 num까지의 숫자 중 홀수로 구성된 문자열을 만들어야 합니다.
num에 5일 경우에는 "135"입니다.

입력 인자
- num은 숫자열입니다.

주의 사항
- for을 이용해서 문제를 풀어야 합니다.
- 짝수를 제외하는 조건을 추가해야 합니다.

예상결과

makeOdd(5) // 135
makeOdd(7) // 1357

답안

function makeOdd(num) {
  let answer = "";
  for (let i = 1; i<=num; i++) {
    if(i % 2){ //truthy 니까 ===1 생략가능
    console.log(i)
    answer += i 
    }
  }
  console.log(answer);
}
  • count += i
    i라는 값을 count에 넣는다.

문제 11) 가장 큰 수 찾기

str은 무작위 숫자인 문자열입니다. 해당 문자열에서 가장 큰 수를 구하는 함수를 만들어야 합니다.
만약 str에 "12345"가 들어온다면 "5"를 나타내야 합니다.

입력 인자
- str은 문자열입니다.

주의 사항
- str에서 각각의 문자를 숫자로 바꿔서 계산해야 합니다.
- 비교할 수 있는 기준값이 있어야 합니다.
- 최댓값을 저장할 수 있는 변수가 있어야 합니다.

예상결과

bigNum(12345) // 5
bigNum(87135) // 8

답안

function bigNum(str) {
  let biggest = str[0] //제일 큰수만 저장할 것임.
  for (let i=1; i<str.length; i++) {
    if(Number(str[i]) > biggest){
      //기존의 큰 값보다 더 큰 값이 존재하는 경우
      //기존의 큰 값에 새로운 큰 값을 담아준다.
      // console.log(i, str[i],biggest)
    biggest = Number(str[i])
    }
  }
  return biggest;
}

문제 12) 마이페이지


등급표
"0~2" ⇒ Bronze
"3~4" ⇒ Silver
5이상 ⇒ Gold
입력 인자


주의 사항
- 반복문을 통해 문제를 풀어야 합니다.
- myShopping 내용을 직접 수정하면 안 됩니다.
- 예상 결과에 나온 문구와 형식이 같아야 합니다.

예상결과

의류를 구매한 횟수는 총 5회 금액은 57000원이며 등급은 Gold입니다.

답안

const myShopping = [
		{ category: "과일", price: 12000 },
		{ category: "의류", price:10000  },
		{ category: "의류", price: 20000 },
		{ category: "장난감", price: 9000 },
		{ category: "과일", price: 5000  },
		{ category: "의류", price: 10000  },
		{ category: "과일", price: 8000  },
		{ category: "의류", price: 7000  },
		{ category: "장난감", price: 5000  },
		{ category: "의류", price: 10000  },
]
let count = 0; //횟수
let amount = 0; //금액
let grade = "Bronze"; //등급 - 브론즈가 기본값
for(let i=0; i<myShopping.length; i++){
  if(myShopping[i].category === "의류"){
    count++; 
    amount += myShopping[i].price //총금액
    //amount = amount + myShopping[i].price 
    // console.log(i,myShopping[i])
  }
}
if(count >= 5){
  grade = "Gold"
}else if(count >=3 ){
  grade = "Silver"
}
//console.log(count); //의류는 총 5개  
//console.log(amount);
console.log(`의류를 구매한 횟수는 총 ${count}회 금액은 ${amount}원이며 등급은 ${grade}입니다`)

forEach

// const str = 'abcde'
// for(let key in str){
//   console.log(key, str[key])
// }
const arr = [1,2,3,4]
// for(let i=0; i<arr.length; i++){
//   console.log(arr[i])
// }
// for(let key of str){
//   console.log(str)
// }
arr.forEach(function(el){
console.log(el);
}) //1,2,3,4
arr.forEach( (el,i) => {
  console.log(el,i);
})// 1,2,3,4 //0,1,2,3
  • 함수의 인자 값으로 함수를 전달한다.(고차함수)

while

while문은 보통 for문을 이용했을 때 몇번 반복했는지 모를 때 사용한다.
만번을 돌려도 나오지 않는 결과를, 결과가 나올 때까지 무한 실행할려고 할 때 사용한다.
// let count = 0;
// while(count !== 10){
//   count ++
//   // count = count + 1.  //count += i
//   console.log(count);
// }

콘솔과 리턴의 차이점

콘솔로그는 함수안에서 여러개가 사용이 된다.
리턴은 함수 안에서 딱 한번만 사용이 된다.
리턴은 함수 종료시 사용이 된다.
알고리즘시 리턴쓰는 습관을 기르자!

profile
JUST DO WHATEVER

0개의 댓글