내일배움캠프

230522 JavaScript 문법반 시작. 1주차 숙제 해결하기

Neda 2023. 5. 22. 20:42

230522 내일배움캠프 2주차 자바스크립트 문법반 시작

이번 주는 자바스크립트 문법반 강의를 듣는다.

따라서 오늘은 0~2주차까지 수업을 들었고

1주차와 2주차의 숙제로 간단한 알고리즘을 풀었다.

자바스크립트 문법은 사전캠프 때도 공부했지만,

늘 모든 것을 기억할 수는 없기 때문에 한 번 더 복습한다는 생각으로 공부하고 있다.

 

1주차 숙제

문자열 연습하기

문제:

대문자와 소문자가 섞여있는 문자열 s가 주어집니다. s에 'p'의 개수와 'y'의 개수를 비교해 같으면 True, 다르면 False를 return 하는 solution를 완성하세요. 'p', 'y' 모두 하나도 없는 경우는 항상 True를 리턴합니다. 단, 개수를 비교할 때 대문자와 소문자는 구별하지 않습니다. 예를 들어 s가 "pPoooyY"면 true를 return하고 "Pyy"라면 false를 return합니다.

해결:

  • p의 개수와 y의 개수를 각각 정규식으로 구하고, 삼항 연산자를 사용한다.
  • 정규식 `/p/ig` -> p라는 단어를  대소문자 구분 없이(i) 전역검색(g)한다
  • 모두 하나도 없는 경우 또한 길이가 같은 경우이므로 삼항 연산자를 사용해도 된다.
  • 하지만 length가 없는 경우  p.length는 null값을 반환하므로 에러가 발생했다.
  • 에러를 피하기 위해 삼항 연산자로 값을 체크하고 없는 경우 0을 사용하도록 지정했다.

작성한 답안:

const solution = (s) => {
  const p = s.match(/p/ig);
  const y = s.match(/y/ig);
  
  const p_length = p ? p.length : 0;
  const y_length = y ? y.length : 0; 
  return p_length === y_length
}

 

반복문, 조건문 연습하기

문제:

어떤 정수들이 있습니다. 이 정수들의 절댓값을 차례대로 담은 정수 배열 absolutes와 이 정수들의 부호를 차례대로 담은 불리언 배열 signs가 매개변수로 주어집니다. 실제 정수들의 합을 구하여 return 하도록 solution 함수를 완성해주세요.

해결:

  • 값과 부호는 곱하면 실제 정수가 되므로
  • signs[i] 값에 따라 1 또는 -1을 정수에 곱하여 reduce 함수로 모두 더하였다.

 

작성한 답안:

const solution = (absolutes, signs) => absolutes.reduce((a,c,i) => a + (c * (signs[i] ? 1 : -1)),0)