[JS알고리즘] 가운데 문자 출력 (substring / substr)




소문자로 된 문자가 입력되면 그 단어의 가운데 문자를 출력하는 프로그램을 작성하시오(단 단어의 길이가 짝수일 경우 가운데 2개의 문자를 출력한다)



substring사용

function solution(s){
	let answer;
  let mid = Math.floor(s.length/2);
  if(s.length % 2 == 1) answer = str.substring(mid, mid+1);
  else answer = str.substring(mid-1, mid+2);
  
  return answer;
}

let str = "study";
console.log(solution(str))


substr사용

function solution(s){
	let answer;
  let mid = Math.floor(s.length/2);
  if(s.length % 2 == 1) answer = str.substr(mid, 1);
  else answer = str.substr(mid-1, 2);
  
  return answer;
}

let str = "study";
console.log(solution(str))



Math.floor => 몫

문자열의 길이가 홀수 일떄는 Math.floor(str.length/2) 가 문자열 인덱스의 정확히 정 가운데를 가리킨다

ex) teacher이 str이면 7을 2로 나누면 몫은 3이 되는데 인덱스 상으로 3번 인덱스의 글자는 c로 정 가운데를 가리킨다


substring 의 인자들은 다 인덱스로, 예를들어 substring(2,3) 이면 2번 인덱스부터 3번인덱스 전까지 추출하겠다는 말이다(결국은 2번 인덱스만 추출하겠다는 것)

그래서 str.substring(mid, mid+1) 코드는 mid 문자 하나만 추출하겠다는 뜻이다.


만약 문자열의 길이가 짝수라면.. 쉽게 예를 들어 length라는 문자열이 있다면 정 가운데 문자 2개인 ng를 추출해야하므로

str.substring(mid-1, mid+1) 앞의 문자열을 하나 더 추가해주어야하니까 -1을 해준다.



substring의 인자는 모두 인덱스인데 반해

substr의 인자는 첫번째 인자만 인덱스 값이고 두번째 인자는 추출하려는 문자의 갯수를 의미한다

그래서 만약 str = ‘really’ 라는 문자열을 substring 이나 substr로 추출한다면

str.substring(1,3) 은 ea ,

str.substr(1,3) 은 eal 이 될것이다



inflearn 자바스크립트 알고리즘 강의 내용 =)




© 2018. by sora

Powered by sora