Javascript

[개념 문제] 08.for - 7. getAllLetters/ 8.심화 - 인사봇

selonjulie 2022. 5. 5. 13:36

7. getAllLetters

Assignment

  • for문을 사용하여 getAllLetters 함수를 작성하세요.
  • 단어(str 인자)가 주어졌을 때 함수의 리턴값은 주어진 단어를 구성하는 모든 문자를 담고 있는 배열입니다.
  • 만약 빈 문자열이 주어졌다면, 빈 배열을 반환해야 합니다.
let output = getAllLetters('Radagast');
console.log(output); // --> ['R', 'a', 'd', 'a', 'g', 'a', 's', 't']

 

문제
function getAllLetters(str) {
  // 아래의 코드를 수정하지 마세요.
  let strArray = [];

  // 아래에 코드를 작성해주세요
  
  
  // 아래의 코드를 수정하지 마세요.
  return strArray;
}

풀기

 

시도1

function getAllLetters(str) {

  let strArray = [];
  for(let i = 0; i < str.length; i++){
    strArray.push(i)
  }
  return strArray;
}

let output = getAllLetters('Radagast');
console.log(output)//[ 0, 1, 2, 3, 4, 5, 6, 7 ]

getAllLetters라는 함수에 str라는 변수에 문자열이 나올때마다 문자열을 각각 출력해야한다. 

1. 빈 배열을 만들어주고

2. 반복문을 str에 들어갈 문자열을 array로 모두 순회하도록 설정한다

3. 기존처럼 빈 배열에 i 변수를 넣는 것으로 정의 하였다.

 

그러니 결과는 i 변수의 숫자만 출력되었다. 

 

시도2

function getAllLetters(str) {

  let strArray = [];
  for(let i = 0; i < str.length; i++){
    strArray.push(str[i])
  }
  return strArray;
}

let output = getAllLetters('Radagast');
console.log(output)
// ['R', 'a', 'd', 'a', 'g', 'a', 's', 't']

문제는 3번에 i의 변수의 숫자가 아닌 문자열 자체가 들어가야 한다. 따라서

strArray.push(str[i]) 즉 i번 수의 인덱스의 문자열이 들어갈 수 있도록 변경해준다

 

let output = getAllLetters('Radagast');

*output은 getAllLetters함수에 input 'Radagast'를 넣은 것으로 정의되었다. 


08. 심화 - 인사봇

여러분은 IT 컨퍼런스의 주최자가 되었습니다.

행사장에 들어오는 사람에게 자동으로 인사해주는 인사봇을 만드려고 합니다.

처음 보는 사람은 숫자 0으로, 한번 봤던 사람은 숫자 1로 표기된 배열이 준비되어 있습니다.

처음 보는 사람에게는 '안녕하세요' 라는 인사를, 한번 봤던 사람에게는 '또 만나네요'라는 인삿말을 남기려고 합니다.

Assignment

  • helloBot이라는 함수를 만들어주세요.
  • for문을 사용하여 빈 result배열에 greetings에 들어있는 인삿말을 채워주세요.
  • 인자에는 0과 1로 이루어진 배열이 들어갑니다.
let group1 = [0,1,1,0,0]
helloBot(group1); // --> ['안녕하세요','또 만나네요','또 만나네요','안녕하세요','안녕하세요']

 

문제
const helloBot = people => {
  
}

풀기

시도1: function을 다시 선언하고 내 맘대로 input명을 hello으로 정의해 풀어봄

//배열의 요소가 0, 1일때 각각의 배열 출력값이 문자열 '안녕하세요', '또 만나네요'가 출력되어야 한다.
function helloBot(hello){ //1. 함수 helloBot을 만들고, input명은 hello로 설정
  let result = []; //2. 결과값을 넣을 빈 비열 result 생성
  for (let i = 0; i<hello.length; i++){ //3. 반복문으로 group1의 배열 요소를 꺼내준다.
    if (hello[i] === 0){ //4. 조건문을 적용하여 input의 값이 0일 때 result에 '안녕하세요'라는 배열을 더하게 한다 (.push사용)
      result.push('안녕하세요')}
    else {result.push('또 만나네요')}//5. else를 적용하여 0이 아닌 경우는 '또 만나네요'라는 배열을 더하게 한다.
    }
  return result //6. result값을 return한다
  }

let group1 = [0,1,1,0,0] //7. 적용하고 싶은 배열을 group1 변수명으로 선언
console.log(helloBot(group1)); //8.helloBot함수에 group1을 대입하여 실행

 

시도2: 문제 자체에 세팅되어 있는 형태를 따르기 (input명 people)

//const는 변수를 선언할 때 사용 (let, var과 비슷)
const helloBot = people => { 
/* helloBot이라는 변수는 people이 input으로 들어간 함수
function으로 표현하면   
const hello = function (people) {} */
}
const helloBot = people => {
  let result = [];
  for (let i = 0; i<people.length; i++){
    if (people[i] === 0){
      result.push('안녕하세요')}
    else {result.push('또 만나네요')}
    }
  return result
  }
let group1 = [0,1,1,0,0] 
console.log(helloBot(group1))