본문 바로가기
Developer/Algorithm

Programmers 프로그래머스 코딩테스트 연습 - 가운데 글자 가져오기 (JavaScript)

by roqkfrlfhr 2020. 8. 4.

Programmers 프로그래머스 코딩테스트 연습 - 가운데 글자 가져오기 (JavaScript)

 

Programmers(프로그래머스)의 코딩테스트 연습문제 Level 1 중,

가운데 글자 가져오기 문제를 JavaScript로 풀어보도록 하겠습니다.

 

 

문제 설명

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

 

제한사항

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

입출력 예

s return
"abcde" "c"
"qwer" "we"

 

작성한 답

solution.js

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

 

설명

작성한 답의 코드를 하나씩 뜯어서 주석을 달아가며 설명 해드리도록 하겠습니다.

function solution(s) {
    // 단어 s의 길이가 홀수인지 짝수인지 판단하여 
    // 단어 s의 길이가 홀수라면 가운데 글자 위치를 찾아 해당 가운데 글자 위치에서 부터 한 문자만 잘라 반환하면 되고,
    // 단어 s의 길이가 짝수라면 가운데에 위치한 글자 두개 중 첫번째 글자 위치에서 부터 두 문자를 잘라 반환하면 됩니다.
    
    // 자를 문자열 시작 위치
    // 단어 s의 길이를 2로 나누고 소수점에서 올림하면 단어 s의 가운데 글자 위치를 구할 수 있는데, 
    // 배열은 1이 아닌 0부터 시작하므로 가운데 글자 위치에서 1을 빼면,
    // 단어의 길이가 홀수인 경우 가운데 글자 위치가 선택되고, 단어의 길이가 짝수인 경우 가운데에 위치한 글자 두개 중 첫번째 글자 위치가 선택됩니다.
    // 홀수 예시 - 단어 길이 : 5, 가운데 문자열 위치 : 2 (배열은 0 부터 시작하기에 3이 아닌 2가 선택됨), 단어 길이 : 9, 가운데 문자열 위치 : 4 (배열은 0 부터 시작하기에 5가 아닌 4가 선택됨)
    // 짝수 예시 - 단어 길이 : 4, 가운데 문자열 위치 : 1 (배열은 0 부터 시작하기에 2가 아닌 1이 선택됨), 단어 길이 : 8, 가운데 문자열 위치 : 3 (배열은 0 부터 시작하기에 4가 아닌 3이 선택됨)
    var stringStartPosition = Math.ceil(s.length / 2) - 1;
    
    // 자를 문자열 길이
    // 단어 s의 길이를 2로 나누어 떨어지면 단어의 길이가 짝수이므로 두글자를, 2로 나누어 떨어지지 않으면 단어의 길이가 홀수이므로 한글자를 반환하도록 선택합니다.
    // 홀수 예시 - 단어 길이 : 5, 자를 문자열 길이 : 1, 단어 길이 : 9, 자를 문자열 길이 : 1
    // 짝수 예시 - 단어 길이 : 4, 자를 문자열 길이 : 2, 단어 길이 : 8, 자를 문자열 길이 : 2
    var stringNum = s.length % 2 === 0 ? 2 : 1;
    
    // 단어를 선택한 자를 문자열 시작 위치에서 선택한 자를 문자열 길이만큼 자릅니다.
    var result = s.substr(stringStartPosition, stringNum);
    
    // 결과 반환
    return result;
}

 

 

 

도움이 되셨다면 공감, 댓글 부탁드립니다!

궁금하신 점이나 요청 사항은 언제든지 말씀 해주세요!

 

감사합니다.


댓글