본문 바로가기
알고리즘 스터디/[프로그래머스] 연습문제

[알고리즘] 가운데 글자 가져오기 문제 풀이(자바스크립트 javascript)

by 제니운 2022. 7. 15.
728x90

(찾아야 할 것)

1. 가운데 글자를 반환하는 법

2. 단어의 길이 아는 법

3. 두 글자를 반환하는 법

 

일단 가운데 글자를 반환하는 것부터 헷갈렸는데, 조건에 단어의 길이가 짝수라면~ 이 있어서, 짝수부터 알아봐야겠다 싶었다.

 

(생각한 모양)

if 단어의 길이 % 2 == 0 {
     반환해 = 가운데 두 글자를
}  else {
     반환해 = 가운데 글자를 -> 홀수}
   return answer;

 

단어의 길이 = length를 사용하면 되는데, 문제를 보면 s의 길이라고 했으니까

s.length라고 하면 되고

👌 s.length %2 ==0    // s의 길이를 2로 나누고 0이니까 짝수다

 

나누었을 때 글자를 반환하려면 []를 사용하면 되는데

예를 들어, abcd의 s.length 이면 4가 되고 bc를 반환해야 하니까

s.length/2 를 하면 숫자 2가 되고 b는 컴퓨터 숫자로 1이니까 

👌 s.length / 2 - 1 // b의 숫자인 1이 산출된다.

👌 s[s.length / 2 - 1] // s의 1번 글자인 b 산출

👌 s[s.length / 2] // s의 2번 글자인 c 산출

 

✅ answer = s[s.length / 2 - 1] + s[s.length / 2] // bc 반환 끝!

 

홀수는 좀 어렵다. 왜냐하면 5를 2로 나누면 2.xx가 되기 때문에 xx를 날려줘야 한다.

반내림 하는 방법은 

👌 Math.floor // M을 m으로 쓰면 코드 실행이 되지 않으므로 대문자 주의!

👌 Math.floor(s.length / 2) // 2.xx의 반내림인 2 산출

👌 s[Math.floor(s.length / 2)] // s의 2번 글자인 c 산출

 

✅ answer = s[Math.floor(s.length/2)]

 

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

 

최종 코드는 위와 같다!

 

✅ 팀원의 다른 코드

 

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

substr('시작위치', '길이') 또는 substr('시작위치')

 

'/'는 몫이고 '%'는 나머지

몫과 나머지를 구분해서 코드 작성한 이유는 글자 수에 따라 몫이 달라질 수 있기 때문에 나눠서 구분한 것

728x90