[TIL] Math.ceil(), substring()

JIEUN YANG·2022년 9월 22일
0

Math.ceil()

주어진 수보다 크거나 같은 숫자 중 ‘가장 작은 숫자’를 리턴하는 함수로 수학에서 ‘올림’이라고 생각하면 된다.

즉 어떤 자리의 수에 1을 더하고 그 미만이 되는 자릿수는 버리는데, 몇 가지를 테스트 해보면 아래와 같다.

Math.ceil(0.34) // 1
Math.ceil(4) // 5
Math.ceil(2.113) // 3
Math.ceil(-0.75) // -0
Math.ceil(-5) // -5
Math.ceil(-9.41) // -9

주의할 점은 항상 Math.ceil()의 형태로 사용해야한다는 것이다.


substring() = String.prototype.substring()

자바스크립트 내장함수로 시작 인덱스 ~ 종료 인덱스 전까지의 문자열을 반환하고, 시작 인덱스는 필수 파라미터/ 종료 인덱스는 선택사항이다.

  • 종료 인덱스가 생략된 경우 : substring() 문자열 끝까지 모든 문자열을 추출한다.
  • 시작 인덱스가 종료 인덱스보다 큰 경우 : 두 개의 인자가 바뀐 듯이 작동한다.

이 두 메서드를 활용하여 가운데 글자 가져오기 풀이를 개선해보자.

s.substring(Math.ceil(s.length / 2) - 1, s.length % 2 === 0 ? Math.ceil(s.length / 2) + 1 : Math.ceil(s.length / 2))
  • substring()의 첫번째 인자로 ‘Math.ceil(s.length / 2) -1 를 명시하여 가운데 스트링의 위치를 찾은 뒤 이것을 문자열 변형의 시작점으로 세팅한다.
  • 두 번째 인자인 종료 인덱스는 주어진 문자열의 크기가 짝수인지 홀수인지에 따라 동적으로 변경된다.
  • 만약 짝수라면, 두 개의 문자열을 리턴해야 하기 때문에 시작 인덱스에서 2만큼 큰 인덱스의 위치를
  • 홀수라면, 한 개의 문자열만 리턴하면 되기에 시작 인덱스에서 1만큼 큰 인덱스의 위치까지 문자열을 반환한다.

이전코드와 비교했을 때, if문이 없어졌기에 성능면에서는 나아졌을지 모르나, 코드 길이가 매우 짧음에도 불구하고 가독성이 좋아보이지는 않는다.
가독성과 성능 모두를 고려하는 코드를 짜기란 쉽지 않다는 생각이 든다..

"이렇게도 구현할 수 있다(?)"를 배워가며 포스팅 끝-!

profile
violet's development note

0개의 댓글

관련 채용 정보