본문 바로가기
내일배움 과제/기타 과제

알고리즘 30번 - 가운데 글자 가져오기

by GREEN나무 2024. 12. 9.
728x90

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

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

JS

문제

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

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


계획

문자열 변수를 배열로 만들기

배열.길이%2로 홀짝 구분

짝 - 배열[배열길이/2]과 배열[배열길이/2 +1]을 문자열로 바꿔서 반환

홀 - round(반올림)이나 ceil(올림)를 사용해 가운데 글자 반환


참고, 풀이

split() : 문자열을 배열로 변환

let array = string.split(separator);

 join()  : 배열을 문자열로 변환

let string = array.join(separator);

 

 

오류 : 올림이 아니라 내림을 했어야 했음, 짝수 출력에 join이 의도한 대로 되지 않음

실행한 결괏값 "e,r"이 기댓값 "we"과 다릅니다.

function solution(s) {
    var answer = '';
    let arr = s.split('')
    let halfB = arr.length%2
    let halfN = Math.ceil(arr.length/2)
    if(halfB){
         //홀
        answer = arr[halfN]        
    }else{
        //짝
        let halfA=[arr[halfN],arr[halfN+1]]
        answer = halfA.join()       
    }    
    return answer;
}

function solution(s) {
    var answer = '';
    let arr = s.split(''); // 문자열을 문자 배열로 변환
    let length = arr.length;
    let halfN = Math.floor(length / 2); // 반 나누기

    if (length % 2 === 0) {
        // 짝수일 때
        answer = arr[halfN - 1] + arr[halfN]; // 가운데 두 글자
    } else {
        // 홀수일 때
        answer = arr[halfN]; // 가운데 한 글자
    }

    return answer;
}

코드 간략화하기

function solution(s) {
    let mid = Math.floor(s.length / 2);
    return s.length % 2 === 0 ? s[mid - 1] + s[mid] : s[mid];
}