관리 메뉴

공부기록용

프로그래머스(LV 1. 가운데 글자 가져오기) 본문

✍️문제풀기✍️/JS_Programmers school

프로그래머스(LV 1. 가운데 글자 가져오기)

과부하가즈아 2023. 6. 16. 11:36

LV 1. 가운데 글자 가져오기

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

문제 설명

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

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

입출력 예

  • s = "abcde" / "qwer"
  • return = "c" / "we"

<해결>

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

    // var str = [...s] // str은 문자열 s를 배열로 만든거
    // console.log(str) // [ 'a', 'b', 'c', 'd', 'e' ]

     var arr = s.length; // arr은 str의 길이
    // console.log(arr)      // 5

    if (arr % 2 == 0) {
        answer = s[arr / 2 - 1] + s[arr / 2];
    } else {
        answer = s[Math.floor(arr/2)];
    }


    return answer;
}
console.log(solution("abcde"))

> 처음에는 s가 문자열이어서 이걸 배열로 바꾸려고 시도했었다. 그럴필요 없었다..ㅎ
> 그냥 s 문자열의 길이만 변수 arr로 바꿔서 진행했다 = 5
> "abcde"의 경우 5 -> 홀수 ans = s[Math.floor(2.5)]로 소수점을 버리면 -> s[2] -> abcde 에서의 2는 -> " c "

🔴배운거
> Math.floor()메서드는 : 소수점 이하를 버림한다.
> 사용한 이유는 홀수인 경우 2로 나누면 소수점이 발생한다.

>그러므로 나눈 값에 Math.floor를 해주어서 반내림을 해주어야하고, 반내림을 해주는 이유는 인덱스는 0부터 시작하기 때문이다. 
> "abcd"의 경수 4 -> 짝수 ans = s[4/2-1=1]+s[2] -> s[1]+s[2] -> abcd에서의 1,2는 -> "bc"


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];
}
Comments