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

ne_ol·2022년 1월 14일
0
post-thumbnail

문제 설명

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

제한사항

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

입출력 예

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

기본 solution 코드

function solution(s) {
    var answer = '';
    return answer;
}

문제 풀이

function solution(s) {
    var answer = ''; 
      if (s.length %2 == 0) { //s 의 길이가 짝수일 때 
      answer = s[s.length / 2 - 1] + s[s.length / 2]
        // s 길이의 반 - 1 값에 해당하는 index 값 + s 길이의 반 값에 해당하는 index 값
    } else { //s 의 길이가 홀수일 때
      answer = s[Math.floor(s.length/2)] // s 길이의 반 값에서 반내림한 index 값
    }
    return answer;
}

풀이 설명

문제 설명 (과 구글링) 에서 힌트를 얻었다. s의 길이 (s.length) 가 짝수라면 (if %2 == 0).

그리고 예시인 "qwer" 의 길이를 2로 나누었을 때 값은 2이다. 그렇다면 "qwer" 의 두 번째 index 값은 "e"가 된다. (s[2] = "e") 하지만 "w" 값을 얻기 위해서는 첫 번째 index 값도 필요하기 때문에 나눈 결과의 몫의 값에서 1을 빼준 index 값을 더해줬다.

두 번째 예시인 "abcde" 의 길이를 2로 나누었을 때 값은 2.5이다. 여기서 가운데 값을 얻기 위해서는 s[2], 즉 s의 두 번째 index 값이 필요하기 때문에, 반내림 기능이 있는 Math.floor() function을 사용했다.

사용 함수

  • Array.length: 배열의 길이를 반환
  • Math.floor(): 주어진 숫자와 같거나 작은 정수 중에서 가장 큰 수를 반환

(출처: https://developer.mozilla.org/ko/)


다른 풀이

function solution(s) {
    return s.substr(Math.ceil(s.length / 2) - 1, s.length % 2 === 0 ? 2 : 1);
}

다른 풀이 설명

  1. 사용된 함수
  • string.substr(start, length): 문자열에서 특정 위치에서 시작하여 특정 문자 수 만큼의 문자들을 반환
  • Math.ceil(): 주어진 숫자보다 크거나 같은 숫자 중 가장 작은 숫자를 integer 로 반환 (올림)
  • ? (조건 연산자/삼항 연산자):
condition ? exprIfTrue : exprIfFalse 
//조건문 ? true일 때 실행할 식 : false 일 때 실행할 식

(출처: https://developer.mozilla.org/ko/)

  1. 풀이
  • "qwer" 로 대입해보면, s.substr(Math.ceil(2) - 1, 2) -> s.substr(1, 2) "we"
  • "abcde" 로 대입해보면, s.substr(Math.ceil(2.5) - 1, 1) -> s.substr(3 - 1, 1) -> s.substr(2, 1) -> "c"
  1. 천잰가?
profile
개발되는 중입니다.

0개의 댓글