[프로그래머스] Level1. 가운데 글자 가져오기

가운데 글자 가져오기

✍ 문제 설명
단어 s의 가운데 글자를 반환하는 함수, solution을 만들어 보세요.
단어의 길이가 짝수라면 가운데 두글자를 반환하면 됩니다.

✍ 제한사항

  • s는 길이가 1이상, 100이하인 스트링입니다.

✍ 입출력 예

sreturn
"abcde""c"
"qwer""we"

❓ 문제를 읽고나서 생각
1. 짝수, 홀수!!!
2. 짝수일 때 두글자를 어떻게 반환해야하지.. 문자열을 어떻게 잘라야하지?

// ( solution.js )
// 예) s : "abcde"일 경우
function solution(s) {
  var answer = '';
  let stringStart = Math.ceil(s.length / 2)-1;
  // 문자열 자를 때 시작위치
  console.log(stringStart); // 2
  
  let stringNumber = s.length % 2 === 0 ? 2 : 1;
  // 자를 문자열의 길이, 짝수일경우 2, 홀수일경우 1 반환하도록 삼항연산자 사용
  console.log(stringNumber); // 1
  
  answer = s.substr(stringStart, stringNumber);
  console.log(answer); // c
  
  return answer;
}

<출처 - 모던자바스크립트 Deep Dive>

❓ Math.ceil

Math.ceil();

Math.ceil 메서드는 인수로 전달된 숫자의 소수점 이하를 올림한 정수로 반환한다.
소수점 이하를 올림하면 더 큰 정수가 된다.
예를 들어, 1.4의 소수점 이하를 올림하면 2가 되고, -1.4의 소수점 이하를 올림하면 -1이 된다.

Math.ceil(1.4); // 2
Math.ceil(1.6); // 2
Math.ceil(-1.4); // -1
Math.ceil(-1.6); // -1
Math.ceil(1); // 1
Math.ceil(); // NaN

<출처 - MDN Web Docs : https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/String/substr>

❓ substr

str.substr(start, length);

substr()는 start에서 문자들을 추출을 시작하여 length만큼 문자들을 수집한다.

  • start : 추출하고자 하는 문자들의 시작위치
    만약 음수일 경우, 문자열총길이 + start의 값으로 취급한다.
    예를 들면, start에 -3을 설정하면 자동적으로 문자열총길이 -3으로 설정된다.
  • length : 추출할 문자들의 총 숫자
    length가 0 또는 음수일 경우, substr()은 빈 문자열을 반환되고,
    length가 생략되면 substr()은 문자열의 끝까지 추출하여 반환한다.
var str = 'abcdefghij';

str = str.substr(1, 2);
console.log(str); // bc

str1 = str.substr(-3, 2);
console.log(str1); // hi

str2 = str.substr(-3);
console.log(str2); // hij

str3 = str.substr(1);
console.log(str3); // bcdefghij

str4 = str.substr(-20, 2);
console.log(str4); // ab

str5 = str.substr(20, 2);
console.log(str5); // ' '(빈문자열)

<출처 - 모던자바스크립트 Deep Dive>

❓ substring

  • substring 메서드는 대상 문자열에서 첫 번째 인수로 전달받은 인덱스에 위치하는 문자부터 두 번째 인수로 전달받은 인덱스에 위치하는 문자의 바로 이전까지의 부분 문자열을 반환한다.
const str = 'Hello World';

// index 1부터 4이전까지의 부분 문자열을 반환한다.
str.substring(1, 4);
console.log(str); // ell
  • substring 메서드의 두 번째 인수는 생략이 가능하다. 이 때 첫 번째 인수로 전달한 인덱스에 위치하는 문자부터 마지막 문자까지 부분 문자열을 반환한다.
const str = 'Hello World';

//
str.substring(1);
console.log(str); // ello World
  • substring메서드의 첫 번째 인수는 두 번째 인수보다 작은 정수이어야 정상이지만, 다음과 같이 인수를 전달하여도 정상 동작한다.
    ① 첫 번째 인수 > 두 번째 인수 → 두 인수는 교환된다.
    ② 인수 < 0 또는 NaN인 경우 0으로 취급된다.
    ③ 인수 > 문자열의길이(str.length)인 경우 인수는 문자열의 길이(str.length)로 취급된다.
const str = 'Hello World'; // str.length == 11

// ① 첫 번째 인수 > 두 번째 인수 → 두 인수는 교환된다.
str.substring(4, 1); // ell

// ② 인수 < 0 또는 NaN인 경우 0으로 취급된다.
str.substring(-2); // Hello World

// ③ 인수 > 문자열의길이(str.length)인 경우 인수는 문자열의 길이(str.length)로 취급된다.
str.substinrg(1, 100); // ello World
str.substring(20); // ' '(빈 문자열)

좋은 웹페이지 즐겨찾기