항해 프로그래머스

항해3주차 자바스크립트 프로그래머스 - 가운데 글자 가져오기

완두노예 2023. 1. 27. 13:29

나의 풀이 

문자열의 길이가 홀수일 때 2로 나누면 나눈 값은 소숫점이 될 것이다.

그러므로 나눈 값에 Math.floor()메서드를 사용해 반내림을 해주어야 한다.

반올림이 아닌 반내림을 하는 이유는 인덱스는 0부터 시작하기 때문이다.

function solution(s) {
    var answer = '';
    
    if (s.length % 2 == 0 ) { // 짝수일 경우,
        answer = s[s.length / 2 - 1] + s[s.length / 2];
    } else {
        answer = s[Math.floor(s.length/2)]; // 홀수일 경우, 반내림 하기
    }
    return answer;
}
//단어 길이가 홀수일때 가운데 1자리만 반환
//단어 길이가 짝수일때 가운데 2자리만 반환
//if 단어길이 % 2 != 0 
//return 가운데 1자리 반환
//else return 가운데 2자리 반환

다른 풀이

substr

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

console.log(solution("abcde"));
console.log(solution("abcdefgh"));

answer += s.slice(length/2, length/2 +1);

function solution(s) {
    var length = s.length;
    var answer = '';

    if(!(s.length >0 && s.length<100)) {
        return;
    }

    if(length % 2 != 0) {
        answer += s.slice(length/2, length/2 +1);
    }else {
        answer += s.slice(length/2 -1, length/2 +1);
    }

    return answer;

}

var s = 'qwerty';
console.log(solution(s));
const solution = s => {
    return s.length % 2 ? 
        s[parseInt(s.length/2)] :
        s.substr(s.length/2-1, 2);
}

answer = s[length/2-0.5]    // 홀수

function solution(s) {
    var answer = '';
    var length = s.length;

    if(length % 2 == 0){
        answer = s[length/2-1] + s[length/2]
    }else{
        answer = s[length/2-0.5]
    }

    return answer;
}
function solution(s) {
    let i = (s.length-1)/2;
    return i%1 ? (s[i-0.5] + s[i+0.5]) : s[i];
}
function solution(s) {
    var answer = '';
    var s_len=s.length;
    if(s_len%2==0){
        for(var i=s_len/2-1;i<=s_len/2;i++){
            answer+=s[i];
        }
    }
    else
        answer=s[(s_len-1)/2];

    return answer;
}