와 역대급 짧은 코드
이때까지 뭘 한거지...?
문자열을 포함한거를 찾아서 어쩌구 할까? 라는 생각때문에 inclues와 indexOf를 사용해서 풀어본 결과 얘가되면 쟤가 안되고 이런 문제가 계속 발생해서 그냥 엎어서 아예 다르게 풀어야 겠다 생각. 그리고 고민 끝에 든 생각이 아 문자열에서 동일 한걸 찾으면 따로 빼는 것이 아니라 바꿔서 내가 그걸 이용하면 어떨까? 라는 생각이 듬. 이생각으로 푼 결과 맞았다.
const fs = require('fs');
const filePath = process.platform === 'linux' ? '/dev/stdin' : './input.txt';
let input = fs.readFileSync(filePath).toString().trim().split('\n');
let words = input[0];
let croatia = [/c=/g , /c-/g, /dz=/g, /d-/g, /lj/g, /nj/g, /s=/g, /z=/g]
croatia.forEach(element => {
words = words.replace(element, 1);
});
console.log(words.length);
정규식을 이용해서 replaceAll대체. replace만 하면 엄청나게 간단하게 풀 수 있는 문제를 정말 이상한 짓 다하면서 틀린 내가 참 재밌다...^^
코드를 설명하자면
1. croatia 배열(replaceAll을 대체하기 위한 정규식을 이용하기 위해 저런식으로 작성)을 만든다.
2. 문자열에서 croatia배열의 문자와 같은 것이 있으면 1로 대체한다.(해당하는 문자가 중복이여도 정규식을 썼기에 다 replace된다.)
3. 다 대체되고 나면 그냥 알파벳과 숫자1로 바뀌어진 문자열이 완성된다.
4. 이 완성된 문자열의 길이가 알파벳 길이로 정답이 된다.
const fs = require('fs');
const filePath = process.platform === 'linux' ? '/dev/stdin' : './input.txt';
let input = fs.readFileSync(filePath).toString().trim().split(' ');
let len = input[0].split('').length;
let inputArr = input[0].split('');
// console.log(inputArr);
let count = 0;
let c_arr = ['c=', 'c-', 'dz=', 'd-', 'lj', 'nj', 's=', 'z='];
let deleteArr = [];
//c=c=
let strIndex = 0;
for(let i=0; i < len; i++) {
for(let j=0; j < c_arr.length; j++) {
let word = inputArr
if(inputArr[i] === c_arr[j].split('')[0]) {
if(inputArr[i+1] === c_arr[j].split('')[1]) {
deleteArr.push(c_arr[j]);
}
}
}
}
console.log(deleteArr);
deleteArr.forEach(element => {
input[0] = input[0].replace(element,"")
});
const set = new Set(deleteArr);
// let deleteArr_uniqe = [...set];
// console.log(deleteArr_uniqe);
let remain = input[0].split('').length;
count = deleteArr.length;
console.log(count);
console.log(count + remain);
ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ.......
const regex = /[0-9]/g;
const result = change.replace(regex_w, "");
/[0-9]/g 이거는 문자만 뽑아내기가 가능하다. 그래서 문자만 뽑은 거를 ""로 대체해서 result는 숫자만 있는 문자열이 된다. 이것도 기억해두기