[코테] 가운데 글자 가져오기

JulyK9·2022년 12월 29일
0

문제

단어 s의 가운데 글자를 반환하는 함수, solution 만들기.
단어의 길이가 짝수라면 가운데 두글자를 반환.

제출코드

function solution(s) {
    
    const ctrIdx = Math.floor(s.length / 2)
    
    // 단어길이 홀수
    if(s.length % 2 === 1) {
      return s[ctrIdx]
    } 
  
    // 단어길이 짝수
    else {
      return s[ctrIdx-1] + s[ctrIdx]
    } 
  	
  
  	// ... 삼항연산자를 이용해서 하면
  	const ctrIdx = Math.floor(s.length / 2)
    return s.length % 2 === 1 ? s[ctrIdx] : s[ctrIdx-1] + s[ctrIdx]
}

접근과정

  • 문자열 특정 위치에 접근하는 방법
    => 대괄호 표기법 / 추가로 str.charAt() 도 있다고 한다
    => 둘의 가장 큰 차이점은 index 범위 밖을 특정할 경우 대괄호 표기법은 undefined, chartAt()은 빈 문자열('')을 반환
  • 가운데 위치를 index로 접근하기 위해 Math.floor() 활용
  • 짝수인 경우는 특정한 인덱스의 바로 전까지 2개를 출력해준다

다른풀이

function solution(s) {
    return s.substring(Math.ceil(s.length / 2) - 1, Math.floor(s.length / 2) + 1);
}
  • str.substring() 메서드를 활용
    => string 객체의 시작 인덱스부터 종료 인덱스 전 까지의 문자열을 반환
    => 길이가 홀수인 경우와 짝수인 경우, 2번째 인자에서 floor 적용시 인덱스 차이가 생기는 부분을 이용하여 구현
  • 참고로, str.substr() 은 권장되지 않는다고 한다

참고자료

특정 위치 문자 찾기 2가지 방법 (charAt 함수, 대괄호)
https://hianna.tistory.com/378
MDN - String.prototype.substring()
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/String/substring
MDN - String.prototype.substr()
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/String/substr

profile
느리지만 꾸준하게. 부족하거나 잘못된 부분은 알려주시면 감사하겠습니다.

0개의 댓글