알고리즘 문제 풀기 (JS입문) - 가운데 글자 가져오기

2023. 1. 1. 21:14알고리즘 공부

728x90
SMALL

문제

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

 

재한사항

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

 

예시

s return
'abcde' 'c'
'qwer' 'we'

 

function solution(s) {
    var answer = '';
    return answer;
}​

 

내가 푼 답

function solution(s) {
    var answer = '';       
        if (s.length % 2 === 0) {
            answer = s[s.length / 2 - 1] + s[s.length / 2];
        } else {
            answer = s[(s.length - 1) / 2];
        }
        
    
    return answer;
}

s의 길이를 2로 나눴을 때 0이면 짝수이다. 짝수길이라면 가운데 글자 두자리를 데려와야하기때문에

그럼 answer은 s의 배열을 s의 길이 나누기 2를 해서 나온 값, 즉 요소의 자리와 그 앞자리를 호출하라고 했다.

그리고 2로 나눴을때 나머지가 0이 아니라면 홀수라는 뜻인데,

홀수라면 answer을 s의 길이를 2로 나누기전에 -1을 해주고 나누어서 그 값의 자리수를 호출하라고 했다.

 

 

다른 사람이 푼 답

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

위 코드에서는 .substr/ math.ceil를 사용하였다.

 

substr() 문자단위로 시작위치와 자를 길이를 지정하여 문자열을 자른다.
- 함수  :  SUBSTR("문자열", "시작위치", "길이")
Math.ceil(x) 인수와 같거나 큰 수 중에서 가장 작은 정수 반환

 

 

 

Math 메소드 중

자주 사용하는 함수 정리

Math.min(x,y,z....) 가장 작은 값 반환
Math.max(x,y,z....) 가장 큰 값 반환
Math.random() 0보다 크거나 같고 1보다 작은 무작위 숫자 반환
Math.round(x) 소수점 첫 번째 자리에서 반올림 후 반환
Math.floor(x) 인수와 같거나 작은 수 중에서 가장 큰 정수 반환 (내림)
Math.ceil(x) 인수와 같거나 큰 수 중에서 가장 작은 정수 반환 (올림)
Math.abs(x) x의 절댓값 반환
Math.sqrt(x) x의 제곱근 반환
Math.cbrt(x) x의 세제곱근 반환
Math.exp(x) e의 x제곱근 값을 반환
Math.log(x) x의 자연로그 값을 반환.(ln x)
Math.log2(x) x의 2를 밑으로 가지는 로그 값을 반환
Math.pow(x,y) x의 y제곱을 반환
Math.sign(x) x의 부호 값을 반환

 

728x90
LIST