JavaScript
문제풀이 (String 메소드, Array 메소드 이용)
ljy98
2022. 1. 7. 16:16
< 문제 >
1. txt 변수에 e가 몇 개 들어갔는지 구하여라.
2. txt 변수를 5개씩 잘라서 배열에 넣어라.
3. 배열의 요소에 e, z, d, v, n 중 하나 이상 포함되어 있다면, 요소를 삭제하라.
4. 바뀐 배열의 요소 값 중 중복되는 값을 제거하라.
< 문제풀이 >
// 1번 문제풀이
let arr = txt.split("e"); // e가 있는 부분을 기준으로 txt 문자열을 분할
console.log(arr);
console.log(arr.length - 1); // e의 갯수가 n일 때 arr의 요소 갯수는 n+1개
// 2번 문제풀이
let arr2 = [];
let splitFive;
for (let i = 0; i < txt.length; i++) {
if (i%5 == 0) {
splitFive = txt.substr(i, 5); // 0번째 인덱스부터 5개, 5번째 인덱스부터 5개, ...
arr2.push(splitFive); // arr2에 삽입
}
}
console.log(arr2); // ['1e531', '51661', '52e11', '52z1d', '1v4b1', 'n']
// 3번 문제풀이
let ezdvn = [];
arr2.forEach(function(element) {
let e = element.indexOf('e'); //indexOf('') 안의 문자가 없을 경우 -1 리턴
let z = element.indexOf('z');
let d = element.indexOf('d');
let v = element.indexOf('v');
let n = element.indexOf('n');
if (e + z + d + v + n == -5) { // 문제 조건을 만족하는 e, z, d, v, n 값은 모두 -1이므로
ezdvn.push(element);
}
});
console.log(ezdvn); // ['51661']
// 4번 문제풀이
let str = ezdvn[0];
console.log(str); // 51661
let str2;
let temp = [];
let temp2 = [];
for (let i = 0; i < 5; i++) { // str의 글자를 하나씩 떼서 배열에 넣는 for 문
temp.push(str.substr(i, 1));
}
console.log(temp); // ['5', '1', '6', '6', '1']
temp.sort(function(a, b) { return a - b; }); // temp의 각 요소를 오름차순으로 정렬
console.log(temp); // ['1', '1', '5', '6', '6']
str2 = temp[0]+temp[1]+temp[2]+temp[3]+temp[4]; // 배열을 다시 string으로 바꿈
console.log(str2); // 11566
for (let i = 0; i < str2.length; i++) {
let minus = str2.indexOf(temp[i-1]);
let plus = str2.indexOf(temp[i+1]);
if (str2.indexOf(temp[i]) < plus && str2.indexOf(temp[i]) > minus) { // 양 옆 인덱스 값과 비교해서 값이 다르면 push
temp2.push(temp[i]);
} else if (i == 0 && str2.indexOf(temp[i]) < plus) { // 처음 인덱스값은 오른쪽 인덱스값과 비교
temp2.push(temp[i]);
} else if (i == str2.length - 1 && str2.indexOf(temp[i]) > minus) { // 마지막 인덱스값은 왼쪽 인덱스값과 비교
temp2.push(temp[i]);
}
}
console.log(temp2); // ['5']
// 4번 문제풀이 - 다른 방법
let set = new Set(temp); // new Set();은 중복값을 제거하는 기능
console.log(set); // {5}
let uniqueArr = [...set];
consolt.log(uniqueArr); // [5]