Study JS for me/Algorithm
algorithm 연습2
be well
2019. 4. 26. 17:31
문제. 인자로 받는 문자열의 알파벳을 알파벳의 고유 index로 리턴.
Ex) input : "The sunset sets at twelve o' clock." =>
output : "20 8 5 19 21 14 19 5 20 19 5 20 19 1 20 20 23 5 12 22 5 15 3 12 15 3 11"
해결방안.
1. 대소문자 구분 없이 작동하게 만들기.
2. 알파벳의 고유 index를 찾기 위해 알파벳 배열 만들기.
3. 문자열을 각 요소로 만들어 배열로 담기.
4. 특수문자나 공백 걸러내기.
5. iput으로 오는 배열의 요소를 알파벳 배열에 indexOf를 사용해서 index 찾기.
6. 다시 문자열로 리턴.
먼저 함수를 생성하고 input의 값을 소문자로 통일하고 각 배열로 나눠준다. 그리고 알파벳 배열과 output이 나올 빈 배열 생성.
var alphabetPosition = function(str) {
str = str.toLowerCase(); // 소문자로 통일
str = str.split(''); // 배열로 만들기
var alpabet = "abcdefghijklmnopqrstuvwxyz"; // 알파벳 고유index를 가진 배열 생성
var result = [];
특수문자와 공백을 걸러내기 위해 for문과 if문을 사용해 각 값을 비교.
for(let i = 0 ; i < str.length; i++){
for(let j = 0; j < alpabet.length; j++){
if(str[i]===alpabet[j]){
// alpabet[j]는 알파벳뿐이라 str[i]에서 특수문자나 공백은 제외하고 알파벳일 때만 동작.
알파벳 배열에서 input에 index를 확인 후 빈 배열에 넣어주고 다시 문자열로 리턴.
result.push(1+(alpabet.indexOf(str[i]))) // alpabet 배열에서 a의 index는 0이므로 +1을 해준다.
// indexOf를 사용해서 alpabet 에서 str[i]의 index를 찾는다.
}
}
}
return result.join(' ')
}
결과 확인