https://www.acmicpc.net/problem/2941
let input = fs.readFileSync(file).toString().trim();
const croatiaAlph = ["c=", "c-", "dz=", "d-", "lj", "nj", "s=", "z="];
for (let i = 0; i < croatiaAlph.length; i++) {
input = input.replaceAll(croatiaAlph[i], 0);
}
console.log(input.length);
replace()
메서드는 동일한 문자를 중에 일치하는 문자 중 첫번째만 치환시켜준다.replaceAll()
메서드를 이용하여 입력받는 문자열의 일치하는 문자를 0
으로 치환하는 방향으로 문제를 풀었다.
replaceAll()
은 ECMA-262 12th(2021) 스펙 기준으로 추가된 메서드여서 최신개발환경이 아니라면 사용이 어려운 것같다.
let input = fs.readFileSync(file).toString().trim();
const croatiaAlph = ["c=", "c-", "dz=", "d-", "lj", "nj", "s=", "z="];
for (let elem of croatiaAlph) {
input = input.split(elem).join("0");
}
console.log(input.length);
문자 -> 분리된 배열
split()
메서드를 이용해 문자를 자른다.분리된 배열요소 -> 문자
join()
메서드를 이용해 배열의 요소를 문자열로 만들어주되, 기준을 join()
메서드의 인자로 이어붙여준다.join()으로 변환된 문자열은 input에 재 할당되어 다음 for문의 순서에 사용된다.
elem : 1번상황 -> 2번상황 : input의 값으로 재할당된다.(3번)
"c=" : [ 'ljes=njak' ] -> ljes=njak
"c-" : [ 'ljes=njak' ] -> ljes=njak
"dz=" : [ 'ljes=njak' ] -> ljes=njak
"d-" : [ 'ljes=njak' ] -> ljes=njak
"lj" : [ '', 'es=njak' ] -> 0es=njak
"nj" : [ 'ljes=', 'ak' ] -> 0es=0ak
"s= : [ 'lje', 'njak' ] -> 0e00ak
"z=" : [ 'ljes=njak' ] -> 0e00ak
replaceAll
은 2021의 아주 최신버전 기능이여서 적용되지 않는 곳이 있을 수 있다.let 요소 in 배열
: map()메서드 처럼 사용 가능한 반복문 조건