[Lv.1]가운데 글자 가져오기

Jihyun-Jeon·2022년 4월 13일
0

문제 : https://programmers.co.kr/learn/courses/30/lessons/12903

🔶내가 한 방법

  • slice 활용
function solution(idx) {
  const long = idx.length;
  const half = long / 2;

  if (long % 2) {
    return idx.slice(Math.floor(half), Math.floor(half) + 1); // 2,3
  }

  return idx.slice(half - 1, half + 1); // 1,3
}

🔶 다른 사람 방법

  • 방법1 - substring 이용
 function solution(s) {
   return s.substring(Math.ceil(s.length / 2) - 1, Math.floor(s.length / 2) + 1);
 }
  • 방법2 - floor만 활용
 function solution(s) {
   const mid = Math.floor(s.length / 2);
   return s.length % 2 === 1 ? s[mid] : s[mid - 1] + s[mid];
 }

🔶 피드백

🔆 String.prototype.substring()

  • 정의
    : string 객체의 시작 인덱스로 부터 종료 인덱스 전 까지 문자열의 부분 문자열을 반환합니다.
  • 형태
    : str.substring(시작할 인덱스, 마지막 인덱스(end는 미포함) )
const str = 'Mozilla';

console.log(str.substring(1, 3));// "oz"
console.log(str.substring(2));// "zilla"

🔆 String.prototype.substr()

: slice와 비슷한데, 곧 없어질 예정이므로 쓰지 않도록 하는게 좋음.

🔆 substring()와 String.prototype.slice()의 차이점

  1. slice는 음수값도 활용 가능, substring는 음수값을 0으로 됨.
  2. slice는 start값이 end값보다 크면 공백으로 나옴,
    substring는 start가 end보다 크면 두 수가 뒤집어짐.
/* slice */
console.log('0123456789'.slice(5, 7)); // 56
console.log('0123456789'.slice(7, 5)); // 공백 ← [P1]start가 end보다 크면 공백으로 나옴
console.log('0123456789'.slice(3, -1)); // 345678 ← [p2]마이너스 값은 활용 가능, NaN은 0으로 인식됨.
console.log('0123456789'.slice(-5, -1)); // 5678 (시작값이 마이너스면, 마이너스로 끝나야 함)
console.log('0123456789'.slice(-5, 1)); // 공백 (시작값이 마이너스면, 마이너스로 끝나야 함)

/* substring */
console.log('0123456789'.substring(5, 7)); // 56
console.log('0123456789'.substring(7, 5)); // 56 ← [P1]start가 end보다 크면 두 수가 뒤집어짐. (5,7)인 꼴
console.log('0123456789'.substring(3, -1)); // 012 ← [p2]마이너스값과 NaN은 0으로 인식됨, 따라서 (0,3)인 꼴임

0개의 댓글