[JS알고리즘] 가운데 문자 출력 (substring / substr)
in Algorithm
소문자로 된 문자가 입력되면 그 단어의 가운데 문자를 출력하는 프로그램을 작성하시오(단 단어의 길이가 짝수일 경우 가운데 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 자바스크립트 알고리즘 강의 내용 =)