ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [TIL] 21/01/18 알고리즘 풀이
    IT 지식 2021. 1. 18. 11:34
    728x90

    오늘의 문제 - 프로그래머스 '가운데 글자 가져오기'

     

    문제 소개

    더보기

     

    가운데 글자 가져오기

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

    제한사항

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

    입출력 예

    sreturn

    abcde c
    qwer we

     

     

     

    나의 풀이

    초기 풀이

    더보기
    function solution(s) {
        var answer = '';
        //단어를 추출하기 위해 단어를 하나하나 쪼개야 한다고 생각했습니다.
        let answerArr = [];
        s = s.split('')
        //그리고 가운데 글자의 위치를 파악하기 위해 중간 지점의 숫자도 설정해주었습니다.
        var n = parseInt((s.length - 1) / 2)
    
        if(s.length % 2 === 1) {
         answerArr = answerArr.concat(s[n])
          return answer = answerArr.pop()
        } else {
          answerArr = answerArr.concat(s[n], s[n+1])
          return answer = answerArr.join('')
        }
    
        return answer;
    }

     

    리팩토링 후 풀이

    더보기
    function solution(s) {
        var answer = '';
        let answerArr = [];
        s = s.split('')
        var n = parseInt((s.length - 1) / 2)
      
      	//위의 if 문을 삼항연산자를 활용하여 한줄로 만들어 주었습니다.
        answer = s.length % 2 === 1 ? answerArr.concat(s[n]).pop() : answerArr.concat(s[n], s[n+1]).join('')
        
        return answer;
    }

     

    다른 분의 풀이

    더보기
    function solution(s) {
        return s.substr(Math.ceil(s.length / 2) - 1, s.length % 2 === 0 ? 2 : 1);
    }
    //출처: https://programmers.co.kr/learn/courses/30/lessons/12903/solution_groups?language=javascript&type=all

     

    후기

    단어를 하나하나 쪼개야 한다고 생각해서, string의 기본 문법을 활용하기 보다는 arr를 통한 접근을 시도해보았습니다. 하지만 이는 결과적으로 정답에 우회해서 접근하는 길이었습니다. string의 기본 메서드를 활용하여 문제를 푸는 방식도 연습해봐야겠습니다.

    728x90

    댓글

Designed by Tistory.