수준별 분반

240726 걷기반 실습

choijming21 2024. 7. 26. 16:07

오늘은 어제 걷기반 수업에서 들었던 함수, 조건문, 반복문에 대해 문제를 풀어보겠다.

 

 

 

 

문제1. 함수호출하기

해당 함수를 실행시켜 "제가 좋아하는 과일은 사과, 오렌지입니다."를 출력하는 코드를 작성해보세요.

function printFruits(a, b) {
  return "제가 좋아하는 과일은 " + a + "," + b + "입니다.";
}

console.log(printFruits(...));

 

  • printFruits 함수가 사과, 오렌지를 매개 변수로 받아 “제가 좋아하는 과일은 사과, 오렌지입니다.”의 문장을 콘솔에 출력할 수 있도록 해주세요.

 

 

나의 답

function printFruits(a, b) {
  return "제가 좋아하는 과일은 " + a + "," + b + "입니다.";
}

console.log(printFruits("사과", "오렌지"));

 

풀이: 이미 함수는 만들어져 있으니 printFruit 함수의 변수부분에 "사과"와 "오렌지"를 넣어주는 콘솔로그를 실행하면 된다.

 

 

 

 

 

 

 

문제2. 조건문 만들기

나이가 19살 이상이면 "안녕하세요", 아니라면 "나가세요"를 반환하는 함수인 checkAge 함수를 완성해 보세요.

function checkAge(age) {
...
}

// 함수 실행
...

 

  • *checkAge* 함수가 숫자(*age)*를 매개 변수로 받아 19 이상일 때에는 *“안녕하세요”*라는 문자열을, 19 미만일 때에는 “나가세요”라는 문자열을 반환하도록 *checkAge* 함수를 완성해주세요.
  • 실제 숫자를 매개변수로 받도록 *checkAge* 함수를 실행하여 “안녕하세요” 혹은 “나가세요”를 콘솔에 출력해보세요.

 

 

나의 답

function checkAge(age) {
  if (age >= 19) {
    return "안녕하세요";
  } else {
    return "나가세요";
  }
}

// 함수 실행
console.log(checkAge(20)); // 예상 출력: "안녕하세요"
console.log(checkAge(5)); // 예상 출력: "나가세요"

 

풀이: 나이가 19살 이상이면 "안녕하세요"를 반환하고 아니면 "나가세요"를 출력해야하는 조건이 있으니 조건문 if를 사용해야 한다는 것을 알 수 있다. 따라서 age가 19살 이상이면 true(참)이니까 "안녕하세요"를 return 하고 19살 이하면 "나가세요"를 return할 수 있게 위와 같이 코드를 짜보았다.

 

 

 

 

 

 

 

문제3. 반복문 만들기

문자열(str)과 숫자(n)을 매개변수로 받아 str을 n번 콘솔에 출력하는 함수인 repeatWord 함수를 완성해보세요.

function repeatWord(str, n) {
  ...
}

// 함수 실행
....

 

  • repeatWord 함수의 내용을 채워주세요.
  • 인자 “hello”, 5를 넣어 repeatWord 함수를 실행시켜주세요. -> 결과: hello hello hello hello

 

 

나의 답

function repeatWord(str, n) {
  for (let i = 0; i < n; i++) {
    console.log(str);
  }
}

// 함수 실행
repeatWord("hello", 5);

 

풀이: str을 n번 콘솔에 입력해야 하니 반복문인 for문을 써야한다는 것을 알 수 있다. 0번째 요소부터 1씩 증가하면서 n번까지 str(문자열)을 찍어내야 하기 때문에 i = 0; i < n; i++ 선언해주었고, 콘솔을 사용해서 str(문자열)을 찍어주면 된다.

 

 

 

 

 

 

 

문제4. 함수 응용하기

getStudents 함수를 완성하여 members 객체에서 role이 tutor인 객체들의 name을 콘솔에 찍어보세요.

const members = [
  {
    name: "최원장",
    role: "tutor",
  },
  {
    name: "윤창식",
    role: "tutor",
  },
  {
    name: "김병연",
    role: "tutor",
  },
  {
    name: "박가현",
    role: "tutor",
  },
  {
    name: "김멍멍",
    role: "student",
  },
  {
    name: "이야옹",
    role: "student",
  },
];

function getStudents() {
 // hint: 배열 안의 모든 객체를 한 번 반복한다.  (반복문)
 // hint: 반복문 안에서 role이 tutor인 객체의 name을 콘솔에 출력한다 (조건문)
  ...
}

// 함수 실행
...

 

  • getStudents 함수의 내용을 채워주세요.
  • getStudents 함수를 실행시켜주세요. -> 결과: 최원장 윤창식 김병연 박가현

 

 

나의 답

const members = [
  {
    name: "최원장",
    role: "tutor",
  },
  {
    name: "윤창식",
    role: "tutor",
  },
  {
    name: "김병연",
    role: "tutor",
  },
  {
    name: "박가현",
    role: "tutor",
  },
  {
    name: "김멍멍",
    role: "student",
  },
  {
    name: "이야옹",
    role: "student",
  },
];

function getStudents() {
  // hint: 배열 안의 모든 객체를 한 번 반복한다.  (반복문)
  // hint: 반복문 안에서 role이 tutor인 객체의 name을 콘솔에 출력한다 (조건문)
  for (let i = 0; i < members.length; i++) {
    if (members[i].role === "tutor") {
      console.log(members[i].name);
    }
  }
}

// 함수 실행
getStudents();

 

풀이: 여기서 중요한 점은 member은 객체들을 가지고 있는 배열이다. 이말은 즉 전체를 보면 배열인데, 배열 안에 여러개의 객체들을 가지고 있는 것이다. 일단 배열 안의 모든 객체들을 반복해야 하기 때문에 for문을 사용하여 member의 배열 길이 만큼 한번만 돌아준다. 돌때 객체의 property(속성) 중 role : tutor인 객체의 name을  콘솔에 출력해야 하기 때문에 members[i].role === "tutor" 을 조건으로 하는 if문을 for문 안에 만들어줘야 한다. 저것을 해석해 보자면, "member라는 배열안에 i번째 객체의 role이 tutor이니? 응 맞아."라는 뜻이다. 어려웠던 점은 배열접근법과 객체접근법 두개를 혼합해서 사용해야 되기 때문에 난이도가 좀 있는 문제였던것 같다. 마지막으로 member이라는 배열에 i번째 객체의 name을 콘솔로 출력해주면 된다.

 

 

 

 

 

 

.

.

.

 

 

 

#일기

오늘은 마지막 '문제4. 함수 응용하기'가 조금은 어려웠던 것 같다. 그래도 포기하지 않고 생각해보다가 배열안의 객체에 접근하는 방법을 검색해보니 쉽게 해결할 수 있는 문제였던 것 같다! 문제를 모르겠으면 답을 검색해보는 것이 아닌 어떻게 접근할지 생각하는 것이 매우 중요한 것 같다. 나중에도 어려운 문제와 마주하겠지만, 어떻게 접근할지 미리 한글로 써보고 순서대로 코드를 짜면서 문제를 해결해 나간다면 정말 훌륭한 개발자가 될 수 있겠다고 생각했다!! 또한 어떻게 검색을 하냐도 개발자 역량을 키우는데 있어 관건인 것 같다. 어떻게 검색해야 문제에 대한 실마리가 나올 수 있을지 고민해봐야겠다 :)